Android中标签的生命周期

时间:2016-10-24 13:03:04

标签: android android-fragments tabs android-lifecycle fragment-lifecycle

我正在使用TabLayout和ViewPager来实现5个标签作为主/明细布局的详细视图。

当我单击主视图中的某个项目时,它会创建我的详细视图,从而创建必要的选项卡。创建详细视图时,将调用选项卡的onResume()方法。 当我回到主视图时,会调用详细视图的onPause(),但不会调用选项卡的 onPause()

这是一个问题,因为我在每个选项卡的onResume()方法中订阅事件,但是应该在每个选项卡的onPause()中执行的取消订阅永远不会发生。

因此,如果我在主视图中的项目上单击n次,则订阅将完成n次,并且每个事件都会被处理n次。

我试过这个解决方案https://looksok.wordpress.com/2013/11/02/viewpager-with-detailed-fragment-lifecycle-onresumefragment-including-source-code/ 我在SO答案中找到了,但它没有用,因为onFragmentPause()(Id 0)中片段的id与onFragmentResume()中片段的id不同(因此onFragmentPause()中的订阅为null )。

我不明白如何在每次点击一个项目时让标签片段不重复,或者如何让它们调用onPause()方法。

1 个答案:

答案 0 :(得分:1)

AndroidDev中所述,在处理嵌套片段时应调用getChildFragmentManager()而不是getSupportFragmentManager()。

我在查看寻呼机适配器时使用了错误的方法。 我改成了:

adapter = new PagerAdapter(getChildFragmentManager(), tabLayout.getTabCount());