当我在上面替换 Fragment 时,如何在 TabLayout 中保留 ViewPager 的状态?
How do I retain the state of my ViewPager in my TabLayout when I'm replacing a Fragment on top of it?
我有一个 activity,它使用了一堆不同的片段。我有一个 TabContainer 片段,它包含一个 TabLayout,它使用 ViewPager 来处理选项卡导航。每个选项卡都是它自己的片段。
在我的一个选项卡中,我想点击并将一个片段放在我的选项卡片段之上。这是一个 "details" 类型的屏幕,所以我不希望选项卡可见。我正在使用它并且它按预期工作:
fragmentTransaction.replace(android.R.id.content, fragmentToDisplay).addToBackStack(null).commit();
现在,当我向后导航时,我的选项卡中的内容是空的。该选项卡旁边的选项卡中的内容也是空的。当我离开两个选项卡时,将重新创建内容和正常功能 returns。为什么当我删除我的 "detail" 片段时最初没有在选项卡上重新创建内容?
事实证明,我只是没有将正确的 FragmentManager
传递给 FragmentStatePagerAdapter
。
我需要在 Fragment 上调用 getChildFragmentManager()
,而不是在 activity 上调用 getSupportFragmentManager()
。
感谢这两个帖子的回答:
Fragment in ViewPager not restored after popBackStack
和:Replacing ViewPager with Fragment - Then Navigating Back
我有一个 activity,它使用了一堆不同的片段。我有一个 TabContainer 片段,它包含一个 TabLayout,它使用 ViewPager 来处理选项卡导航。每个选项卡都是它自己的片段。
在我的一个选项卡中,我想点击并将一个片段放在我的选项卡片段之上。这是一个 "details" 类型的屏幕,所以我不希望选项卡可见。我正在使用它并且它按预期工作:
fragmentTransaction.replace(android.R.id.content, fragmentToDisplay).addToBackStack(null).commit();
现在,当我向后导航时,我的选项卡中的内容是空的。该选项卡旁边的选项卡中的内容也是空的。当我离开两个选项卡时,将重新创建内容和正常功能 returns。为什么当我删除我的 "detail" 片段时最初没有在选项卡上重新创建内容?
事实证明,我只是没有将正确的 FragmentManager
传递给 FragmentStatePagerAdapter
。
我需要在 Fragment 上调用 getChildFragmentManager()
,而不是在 activity 上调用 getSupportFragmentManager()
。
感谢这两个帖子的回答: Fragment in ViewPager not restored after popBackStack 和:Replacing ViewPager with Fragment - Then Navigating Back