このアプローチを試してみてください:あなたのイベントを表し、通常のJavaクラスを作成し、その後、あなたのmodule
レベルbuild.gradle
ファイルに
compile 'org.greenrobot:eventbus:3.0.0'
を次の行を追加します。
public class UpdateFragmentsUIEvent{
//add your values you want to pass to your other fragments
private String valueA;
private String valueB;
private String valueC;
//.....others?
public UpdateFragmentsUIEvent(){
}
//add getters and setters here
}
今、あなたはあなたのイベントクラスを作成したので、更新するフラグメント(最初のものではないが、あなたがにデータを渡したいもの)で、次の操作を行います。
public class FragmentB extends Fragment{
@Override
public void onAttach(Context context){
super.onAttach(context);
//important here - could be done inside onCreate()
EventBus.getDefault().register(this);
}
//very important here as well
public void onEvent(UpdateFragmentsUIEvent event){
/* this event instance has all your values here now */
String valueA = event.getValueA();
String valueB = event.getValueB();
/* Now you can update your views accordingly */
}
/* don't forget to unregister inside onDestroy */
@Override
public void onDestroy(){
super.onDestroy();
EventBus.getDefault().unregister(this);
}
}
//somewhere when a button is clicked after entering data
EventBus.getDefault().post(new UpdateFragmentsUIEvent(valueA, valueB, valueC));
:あなたが値を入力する場所
最後には、実際にあなたが私が思う最初のフラグメント内で、このように新しく鋳造イベントをポストする必要があり、あなたのフラグメントをされて通知します10
それと同じように、あなたは完了です!インターフェイスについては忘れて、この例で使用されるパブリッシャ/サブスクライバパターンのようなコードの疎結合に続く推奨デザインパターンに固執してください。
私はこれが助けてくれると嬉しく思います。
コード – PsyGik