Android 更改活动片段中文本视图的简单示例

Android 更改活动片段中文本视图的简单示例,android,android-fragments,Android,Android Fragments,有谁能给我编写一个简单的示例,说明如何更改活动片段(例如MainActivity.java)中文本视图的内容 我已经尝试过几次,每次我的应用程序都会崩溃。 我尝试使用我创建的方法。 发布我的错误代码使问题复杂化是没有意义的 您可以使用接口在活动和片段之间进行通信 此接口将通知您的片段使用捆绑包中的数据进行更新 public interface UpdateFragmentInterface { public void update(Bundle data); } 此接口用于活动中,以便

有谁能给我编写一个简单的示例,说明如何更改活动片段(例如MainActivity.java)中文本视图的内容

我已经尝试过几次,每次我的应用程序都会崩溃。
我尝试使用我创建的方法。

发布我的错误代码使问题复杂化是没有意义的

您可以使用接口在活动和片段之间进行通信

此接口将通知您的片段使用捆绑包中的数据进行更新

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;
     }
}