没有我粘贴任何代码,我有一个 Activity 显示三个 fragment ,使用 viewpager 在它们之间滑动。
创建 Activity 时,将显示第一个选项卡。如果我选择第二个选项卡并返回到第一个选项卡,一切都很好。但是,如果我选择第三个选项卡,然后再次选择第一个选项卡,则会在第一个选项卡中调用 onResume 方法,这会导致一些不良结果……为什么 onResume 仅在来自第三个选项卡而不是第二个选项卡时被调用?这就像当您滑动到标签三时标签一被杀死,但如果您只是滑动到标签二则标签一不会被杀死..
最佳答案
在没有看到代码的情况下,我只能猜测,但是当您使用选项卡时,您将使用 FragmentPagerAdapter
或 FragmentPagerStateAdapter
这会保留对保留的 fragment 的引用活。我猜您正在使用 FragmentPagerStateAdapter
,它只会使某些 fragment 保持 Activity 状态,并在其他 fragment 离开 View 时销毁它们。因此,当您在第 3 个 fragment 上时,第一个 fragment 正在被销毁,它会被重新创建,因此当您返回并访问它时会调用 onResume。当您在第二个选项卡上时, fragment 不会被销毁,因此当您访问它时,它不需要调用 onResume。 fragment 使左边的一个 fragment 和右边的一个 fragment 保持“活着”,即使它们不在视野中也是如此。所以当你在 1 时,2 还活着。当你在 2 时,1 和 3 还活着,当你在 3 时,2 还活着。我希望这有帮助。
关于Android - viewpager fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40186807/