2016-11-11 7 views
0

私はfragmentAとFragmentBという2つのフラグメントを持っています。私は、FragmentAをバックスタックに追加することによって、FragmentAからFragmentBまでナビゲートすることができます。その後、私はFragmentBについていくつかの作業を行い、FragmentBで行った変更に応じて、FragmentAは、戻るボタンを押してFragmentAに戻るときに更新されるべきです。このシナリオを達成するにはどうしますか?現在のフラグメントから前のフラグメントを更新する

+0

あなたの更新関数をコード化し、フラグメントAのOnResumeでコールします。onResumeが別のケースでもコールするので、関数を呼び出す前にフラグメントBから来ているかどうかを確認してください。 –

答えて

0

はい、のcallbacksの両方が含まれているActivityで処理できます。

here

はそれが役に立てば幸い見てみましょう。

あなたがにsetDataを活動にFragmentAに更新してから、fragmentBから何か

//method in activity with the data to set 
public void setData(recieve data to be set) 
{ 
    //data you want to show in FragmentA; 
    } 

oをonResumeにfragmentAにデータを取得したいデータとメソッドを作成することができます

0

((MainActivity)getActivity()).setData(send some data); 

作成あなたが設定したデータを与えるアクティビティのより多くのメソッドについて 、次にフラグメントA getData()から

((MainActivity)getActivity()).getData(send some data); 
0

LocalBroadcastManagerも同じです。添付ファイルをFragmentに登録してください。下のコードのように更新する必要があります。

@Override 
public void onAttach(Context context) { 
    super.onAttach(context); 
    LocalBroadcastManager.getInstance(getActivity()).registerReceiver(
      _onProfileUpdate, 
      new IntentFilter(UserDefault.broadcastProfileUpdate)); 

} 

@Override 
public void onDetach() { 
    super.onDetach(); 
    LocalBroadcastManager.getInstance(getActivity()).unregisterReceiver(
      _onProfileUpdate); 
} 

...あなたのフラグメントに

private BroadcastReceiver _onProfileUpdate = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 

     setUpBasicInfo(); 
    } 
}; 

をハンドルを作成し、そのフラグメントを更新する必要があるとき、単に他の断片からリスナーを起動します。必要なパラメータをインテントで渡すこともできます。

Intent in = new Intent(UserDefault.broadcastProfileUpdate); 
          LocalBroadcastManager.getInstance(getActivity()).sendBroadcast(in); 

ここで、UserDefault.broadcastProfileUpdateは、いくつかの静的な文字列またはキーを言う。

関連する問題