当前位置: 首页 > 知识库问答 >
问题:

当我替换视图页上的一个片段时,如何在我的TabLayout中保留它的状态?

叶英哲
2023-03-14

我有一个单独的活动,它使用了一堆不同的片段。我有一个TabContainer片段,其中包含一个使用ViewPager处理选项卡导航的TabLayout。每个选项卡都是自己的片段。

在我的一个选项卡中,我想点击并在我的选项卡片段顶部放置一个片段。这是一种“详细信息”屏幕,所以我不希望选项卡可见。我正在使用它,它按预期工作:

fragmentTransaction.replace(android.R.id.content, fragmentToDisplay).addToBackStack(null).commit();

现在,当我返回时,我的选项卡中的内容是空的。紧邻该选项卡的选项卡中的内容也是空的。当我离开两个选项卡时,内容被重新创建,正常功能恢复。当我删除“详细信息”片段时,为什么最初没有在选项卡上重新创建内容?

共有1个答案

宋建柏
2023-03-14

事实证明,我只是没有将正确的FragmentManager传递给FragmentStatePagerAdapter

我需要在 Fragment 上调用 getChildFragmentManager(),而不是在活动上调用 getSupportFragmentManager()。

感谢这两个帖子的答案:PopBackStack后ViewPager中的片段未恢复,以及:用片段替换ViewPager-然后导航返回

 类似资料:
  • 我正在通过片段“A”调用从服务器获取数据。当我用“B”替换“A”时,在从“B”返回到“A”之后,每次都会调用片段“A”,因此每次都会生成HTTPGET。如何避免这种情况,并在活动中重用类似REORDER_to_FRONT的片段? 我正在使用此代码替换为新片段 当我反压时,

  • 视图(在本例中,ViewPager)有自己的保存和恢复状态的实现,我依靠它在设备旋转后将ViewPager保持在同一页面上。 当ViewPager在活动中时,它工作得非常好。我滚动到一个页面,旋转设备,它仍然在那个页面上。在SaveInstanceState中不需要任何代码。 我已经把那个活动转化成了一个片段。现在,ViewPager无法保持其状态!如果我滚动到一个页面并旋转设备,它会返回到第1页

  • 我试图打开一个片段,当一个对话框被点击在另一个片段。我在用ActionBarSherlock和Tab。我的片段附在视图页中。我几乎完成了这项工作。但是我不能替换视图页内的新片段。我有个错误。我读了这里的线程。解决办法还不清楚。 10-18 21:34:40.379:e/AndroidRuntime(19618):致命异常:main 10-18 21:34:40.379:e/AndroidRunti

  • 我正在制作抽屉菜单,目前正在使用: getSupportFragmentManager()。开始交易()。替换(R.id.mainfragment,f1)。提交(); 但是正如你所看到的,它总是用新的片段替换主片段。谢谢!

  • 我有一个包含RecyclerView和EditText的片段。使用runOnUiThread()刷新RecyclerView时,编辑文本中的光标将丢失。如何在调用runOnUiThread()时将光标保留在EditText中,而不更改EditText中的值。

  • 我有一个活动和两个片段。片断a和片断b。 我需要实现像,最初碎片应该在那里。在之后,单击FragmentB应该在那里。 我的第二段代码: