我有4个片段(假设为1、2、3和4)。每次只有一个片段对用户可见。在第二个片段中,当用户进入时,我想要执行某些操作。
现在,当用户导航到第三个片段并点击返回按钮时,我想运行一些代码。我的问题是,当用户点击返回按钮并回到第二个片段时,onResume
没有被调用。
我有4个片段(假设为1、2、3和4)。每次只有一个片段对用户可见。在第二个片段中,当用户进入时,我想要执行某些操作。
现在,当用户导航到第三个片段并点击返回按钮时,我想运行一些代码。我的问题是,当用户点击返回按钮并回到第二个片段时,onResume
没有被调用。
我最近遇到了同样的问题,虽然已经晚了,但以防其他人在寻找答案,这是我的回答:
感谢 @fasteque 缩小了我的搜索范围。
onResume()
或 onPause()
片段只有在 Activities onResume()
或 onPause()
被调用时才会被调用,它们与 Activity 紧密耦合。
但如果您仍然想要监听活动中的更改(例如哪个片段在顶部),并相应地触发事件,则可以查看 FragmentManager.OnBackStackChangedListener
希望这有所帮助 :)
我也遇到过同样的问题。如果你想从第三个片段切换到第二个片段(使用返回按钮或其他方式),你可以在第三个片段的onPause中调用第二个片段。
@Override
public void onPause() {
super.onPause();
Fragment2 fragment2= (Fragment2) getActivity().getSupportFragmentManager().findFragmentById(R.id.fragment2);
if (fragment2!= null) {
//you can call any function from fragment2
fragment2.SomeFunctions();
}
}
onAttach()
方法,而不是onResume()
。 - Procurares