从当前片段更新以前的片段

问题描述:

我有两个片段叫做fragmentA和FragmentB。我可以通过添加FragmentA来反向堆栈从FragmentA导航到FragmentB。然后,我在FragmentB上做了一些工作,并根据FragmentB上所做的更改,当按回退按钮返回FragmentA时,应更新FragmentA。无论如何要实现这种情况?从当前片段更新以前的片段

+0

编码您的更新功能,并在片段A的OnResume中调用它。请在调用函数之前检查您是否来自Fragment B,因为onResume也会在其他情况下调用。 –

是的,你可以通过Activity做到这一点,它包含Fragments实施callbacks

看看here

希望它能帮助。

你可以用你想在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); 

您可以使用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是一些静态字符串或让说键。