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

时间:2016-11-11 07:22:57

标签: android

我有两个片段,分别叫做fragmentA和FragmentB。我可以通过将FragmentA添加到后台堆栈,从FragmentA导航到FragmentB。然后我在FragmentB上做了一些工作,根据在FragmentB上做的更改,当我通过按下后退按钮返回FragmentA时,应该更新FragmentA。反正有没有实现这种情况?

3 个答案:

答案 0 :(得分:0)

是的,您可以通过包含Activity实施Fragments的{​​{1}}来完成。

看看here

希望它有所帮助。

答案 1 :(得分:0)

你可以在活动中创建一个包含你想要在FragmentA中更新的数据的方法,然后在onResume上获取数据到fragmentA

//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); 

答案 2 :(得分: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是一些静态字符串或者说是密钥。