Android 更改活动片段中文本视图的简单示例
有谁能给我编写一个简单的示例,说明如何更改活动片段(例如MainActivity.java)中文本视图的内容 我已经尝试过几次,每次我的应用程序都会崩溃。Android 更改活动片段中文本视图的简单示例,android,android-fragments,Android,Android Fragments,有谁能给我编写一个简单的示例,说明如何更改活动片段(例如MainActivity.java)中文本视图的内容 我已经尝试过几次,每次我的应用程序都会崩溃。 我尝试使用我创建的方法。 发布我的错误代码使问题复杂化是没有意义的 您可以使用接口在活动和片段之间进行通信 此接口将通知您的片段使用捆绑包中的数据进行更新 public interface UpdateFragmentInterface { public void update(Bundle data); } 此接口用于活动中,以便
我尝试使用我创建的方法。
发布我的错误代码使问题复杂化是没有意义的 您可以使用接口在活动和片段之间进行通信 此接口将通知您的片段使用捆绑包中的数据进行更新
public interface UpdateFragmentInterface {
public void update(Bundle data);
}
此接口用于活动中,以便在附加片段时收到通知
public interface OnUpdatableFragmentAttached {
public void onAttach(UpdateFragmentInterface iFace);
public void onDetach(UpdateFragmentInterface iFace);
}
一些虚拟活动
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import java.util.ArrayList;
public class UpdatableActivity extends FragmentActivity implements OnUpdatableFragmentAttached {
private ArrayList<UpdateFragmentInterface> listOfUpdatableFragments;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Do other stuff
listOfUpdatableFragments = new ArrayList<>();
}
private void notifyFragments(){
String someString = "asda";
String someKey = "key1234";
Bundle b = new Bundle();
b.putString(someKey, someString);
for(UpdateFragmentInterface fragment : listOfUpdatableFragments){
fragment.update(b);
}
}
@Override
public void onAttach(UpdateFragmentInterface iFace) {
listOfUpdatableFragments.add(iFace);
}
@Override
public void onDetach(UpdateFragmentInterface iFace) {
listOfUpdatableFragments.remove(iFace);
}
}
我会用一辆像这样的活动巴士 然后 及 与
你能输入一些关键代码吗?谷歌搜索值得一试。不过,请参考这封信,非常感谢。我来试试这个。你介意帮我问这个问题吗
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.Fragment;
public class UpdatableFragment extends Fragment implements UpdateFragmentInterface {
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
if(activity instanceof OnUpdatableFragmentAttached){
((OnUpdatableFragmentAttached) activity).onAttach(this);
}
}
@Override
public void onDetach() {
super.onDetach();
if(getActivity() instanceof OnUpdatableFragmentAttached){
((OnUpdatableFragmentAttached) getActivity()).onDetach(this);
}
}
@Override
public void update(Bundle data) {
// Do something with the data
String result = data.getString("key1234");
}
}
public enum SingletonBus {
INSTANCE;
private Bus bus;
private SingletonBus() {
this.bus = new Bus(ThreadEnforcer.ANY);
}
public Bus getBus() {
return bus;
}
}
public class MainActivity extends ActionBarActivity {
@Override
public void onCreate(Bundle saveInstanceState) {
super.onCreate(saveInstanceState);
//do whatever
}
@Override
public void onResume() {
super.onResume();
SingletonBus.INSTANCE.getBus().register(this);
}
@Override
public void onPause() {
SingletonBus.INSTANCE.getBus().unregister(this);
super.onPause();
}
@Override
public void onPostResume() { //using this to send event only for sake of example
SingletonBus.INSTANCE.getBus().post(new TextViewChangeEvent("hello world!"));
}
}
public class HomeFragment extends Fragment {
@InjectView(R.id.your_text_view)
public TextView yourTextView;
@Override
public void onCreateView(LayoutInflater inflater, ViewGroup container, Bundle saveInstanceState) {
View view = inflater.inflate(R.layout.your_fragment_layout, container, false);
ButterKnife.inject(this, view);
//do whatever
return view;
}
@Override
public void onResume() {
super.onResume();
SingletonBus.INSTANCE.getBus().register(this);
}
@Override
public void onPause() {
SingletonBus.INSTANCE.getBus().unregister(this);
super.onPause();
}
@Subscribe
public void onTextViewChangeEvent(TextViewChangeEvent e) {
this.yourTextView.setText(e.getText());
}
}
public class TextViewChangeEvent {
private String text;
public TextViewChangeEvent(String text) {
this.text = text;
}
public String getText() {
return text;
}
}