滑动到下一个片段并返回后的片段不显示任何内容

Posted

技术标签:

【中文标题】滑动到下一个片段并返回后的片段不显示任何内容【英文标题】:the fragment after swipe to next fragment and get back display nothing 【发布时间】:2015-02-22 11:48:07 【问题描述】:

我有一个view pager,其中包含一些fragment,并向此视图寻呼机添加另一个片段。 在这个新片段中,我有一个list,其中包含来自db 的一些数据。 当我启动我的应用程序时,它运行良好。 swipe 此片段显示列表,但是当我滑动到下一个片段并取回它的空列表时:/ 我尝试在 onViewCreatedonActivityCreated 中为列表设置适配器,但没有改变任何东西。

【问题讨论】:

您滑动到的片段是该片段之后的下一个片段吗?还是它们之间还有其他片段? 我有 3 个片段并从第三个片段创建一些片段,在这种情况下,我指的是第二个片段!我现在测试它,当我用下一个和之前的片段滑动它时它可以,但是当我转到最后一个片段(例如 pos 4)并取回它的空时! 【参考方案1】:

这是因为android中的分片只存储你开始的fragment的下一个fragment和前一个fragment的状态,而为了保持系统的效率而销毁其他的,看this answer。作为适配器构建以销毁距您现在所在的片段两步之遥的片段。

【讨论】:

但是我的第一个片段和第二个片段一样!为什么这没有发生? 您的前两个片段将被存储,然后当您转到第三个片段时,第一个将被销毁,第二个将保持原样,在第四个中第二个也将被销毁,但第三个将会留存。并且说destroyed,这意味着当你回来时布局将被重新创建,这样你对片段所做的任何运行时更改都会消失(比如创建List),这意味着如果你有一个带有固定@的片段987654323@您不会注意到任何变化。任何带有动态视图的片段,您只需要在回来时重新创建它。 我明白你的意思!问题是为什么我的第一个片段列表不为空?它只发生在我的第二个!有没有办法恢复列表数据? 我在第一个和第二个片段中都有列表 这是关于你处理碎片的方式,我不知道为什么第一个仍然存在,可能是你如何重新初始化它并在转到第一个碎片时再次创建它,但所有你必须克服第二个片段或任何其他片段的列表问题,重新创建它,或将其存储在静态引用中,然后在返回片段时使用这些值重新创建它,我想你知道onCreateView()onViewCreated() 每个片段的方法。只需使用 onViewCreated() 使用 view 属性重新创建列表。

以上是关于滑动到下一个片段并返回后的片段不显示任何内容的主要内容,如果未能解决你的问题,请参考以下文章

从另一个片段返回时如何在视图页面中显示片段?

在片段的工具栏中向上导航

片段中的ListView不显示

视频没有在片段 ViewPager 中暂停

我实施滑动标签有什么问题?

为啥选项卡和片段不显示?