2016-11-11 53 views
0

我有兩個片段叫做fragmentA和FragmentB。我可以通過添加FragmentA來反向堆棧從FragmentA導航到FragmentB。然後,我在FragmentB上做了一些工作,並根據FragmentB上所做的更改,當按回退按鈕返回FragmentA時,應更新FragmentA。無論如何要實現這種情況?從當前片段更新以前的片段

+0

編碼您的更新功能,並在片段A的OnResume中調用它。請在調用函數之前檢查您是否來自Fragment B,因爲onResume也會在其他情況下調用。 –

回答

0

是的,你可以通過Activity做到這一點,它包含Fragments實施callbacks

看看here

希望它能幫助。

0

你可以用你想在FragmentA以更新活動,然後得到的數據fragmentA中的onResumeØ東西

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

從fragmentB使用setData數據創建一個方法

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

創建在Activity中給出更多的方法,它給你你設置的數據 然後從fragmentA 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是一些靜態字符串或讓說鍵。