Fragment onResume未被调用。

8

我有4个片段(假设为1、2、3和4)。每次只有一个片段对用户可见。在第二个片段中,当用户进入时,我想要执行某些操作。 现在,当用户导航到第三个片段并点击返回按钮时,我想运行一些代码。我的问题是,当用户点击返回按钮并回到第二个片段时,onResume没有被调用。


尝试使用onAttach()方法,而不是onResume() - Procurares
已经尝试过了...实际上,当我们从片段活动中附加它时,OnAttch()只会被调用一次。 - hemu
你是如何在片段之间切换的?请添加一些示例代码。 - antonyt
你是替换还是添加新片段?同时请注意,根据官方文档,“片段 onResume() 通常与包含活动的生命周期的 Activity.onResume 相关联。” - fasteque
2个回答

4

我最近遇到了同样的问题,虽然已经晚了,但以防其他人在寻找答案,这是我的回答:

感谢 @fasteque 缩小了我的搜索范围。

onResume()onPause() 片段只有在 Activities onResume()onPause() 被调用时才会被调用,它们与 Activity 紧密耦合。

但如果您仍然想要监听活动中的更改(例如哪个片段在顶部),并相应地触发事件,则可以查看 FragmentManager.OnBackStackChangedListener

希望这有所帮助 :)


1

我也遇到过同样的问题。如果你想从第三个片段切换到第二个片段(使用返回按钮或其他方式),你可以在第三个片段的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();
     }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接