我有两个片段,分别叫做fragmentA和FragmentB。我可以通过将FragmentA添加到后台堆栈,从FragmentA导航到FragmentB。然后我在FragmentB上做了一些工作,根据在FragmentB上做的更改,当我通过按下后退按钮返回FragmentA时,应该更新FragmentA。反正有没有实现这种情况?
答案 0 :(得分:0)
答案 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
是一些静态字符串或者说是密钥。