gpt4 book ai didi

android - 恢复 fragment 的正确方法是什么?

转载 作者:行者123 更新时间:2023-11-29 17:51:15 26 4
gpt4 key购买 nike

首先,如果这个解释看起来不清楚,我很抱歉,我是 Android 的新手。我在主要 Activity 中有一个 ViewPager,显示用户动态添加的 fragment 。 fragment 最初是在 Activity 启动时创建的,并通过适配器添加到 ViewPager,即适配器只是返回正确的 fragment ,据我所知, fragment 的内容是在 ViewPager 第一次“检索” fragment 时创建的。

问题是当主 Activity 在方向更改后恢复时,所有 fragment 也会复活,并且当适配器尝试返回由用户新创建的 fragment 时,不再调用 fragment 方法 createView() 并且它因 NullPointerException 而失败。 ViewPager 似乎保留了最初附加到它的 fragment ,并且不会为同一位置的新添加的 fragment 调用 createView()。

我有一种感觉,我错过了 Fragment 生命周期中的关键点。我不想改变设计。我的主要问题是在 Activity 恢复后返回添加到 ViewPage 的 fragment 的正确方法是什么?有什么方法可以找到最近附加的 fragment 吗?

最佳答案

如果 fragment 已经存在,它将被重新使用。但是 fragment 的状态不会。你应该看看http://developer.android.com/training/basics/activity-lifecycle/recreating.html获取更多信息。

特别是您应该考虑覆盖 onSavedInstanceStateonRestoreInstanceState 作为重新填充生成该 nullpointerexception 的字段的方法

要确定 fragment 的实例是否已经创建,您可以像这样使用“findFragmentByTag”:

String fragmentTag = MyFramgment.getClass().getName();
MyFragment frag = getFragmentManager().findFragmentByTag(fragmentTag);

if(frag == null)
frag = new MyFragment();

无论最终在“frag”中引用了什么,都将其显示给用户。

关于android - 恢复 fragment 的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22664599/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com