片段未附加到我的活动

Posted

技术标签:

【中文标题】片段未附加到我的活动【英文标题】:Fragment not attached to my activity 【发布时间】:2012-12-01 03:29:18 【问题描述】:

首先,我使用支持库 (android-support-v4.jar) 来使用片段。

我有一个布局,其中包含一个片段。因此,当活动开始时,它会调用我的片段的 onCreateView 方法。在这种方法中,我膨胀了一个布局(其中包含一个线性布局和一个列表视图)并返回那个膨胀的视图。

因此,当活动启动时,它会加载我的列表视图并调用 Web 服务,并响应该 Web 服务加载列表视图上的数据。

每件事都按预期完美运行。 但问题是,当我按下后退按钮并重新启动活动时,它不会将我的片段附加到活动并在我尝试调用 getActivity() 时抛出 IllegalStateException。当我尝试调用片段的 getView() 方法时也会抛出 NullPointerException。

还要提一下,当我从 TraceView 工具中看到视图层次结构时,它会在那里显示我的片段视图。

请帮帮我!

【问题讨论】:

这段时间之后运气好吗?我也有类似的问题 我已经在下面发布了答案。也许它可以帮助你 这能帮助您解决问题吗? 【参考方案1】:

我发现了问题并因此也解决了它。 我使用 Observer 接口从 Web 服务获取响应。因此,当我第一次开始活动时,我将片段活动添加(或注册)到 Observable 类并收到响应,但在销毁时忘记删除(或取消注册)我的片段对象。因此,当 Activity 和 Fragment 重新启动时,它再次将我的 Fragment 对象添加到 Observable 类中,所以现在 Observable 类现在有两个 Fragment 实例,第一个实例已被销毁,当前的 Fragment 和 Web 服务被调用,它首先以销毁的 Fragment 和到时候它会崩溃。所以我从 Fragment 的 onDestroy 方法中的 Observable 类中删除了 Fragment 实例,它现在可以工作了。

所以问题不在于片段,而在于我的片段的多个实例。

【讨论】:

在 viewpager + fragmetn 的情况下,你如何诊断相同 fragmetn 的两个实例我得到相同的错误 您能否解释一下您的情况,以便我更好地了解情况。 我的 mainactivity 有这么多的片段 ---> 其中一个片段(profileFragment)包含 viewpager + designtablayout --->并且它的 viewpager 适配器已从片段初始化 ----> Profilefragment 包含单击按钮时的按钮,我从该代码pastie.org/10361207 重新替换片段此外,新片段包含后退键.....>我单击后退键,我只是从片段中弹出堆栈 现在我来到了同一个 ProfileFragment 但问题是----->这次我的应用程序应该显示在按下按钮时选择的相同选项卡.....>所以一旦我尝试更改页面然后我的应用程序崩溃说我的片段未附加到任何活动? 我认为您需要再次初始化寻呼机适配器,因为当您从 EditUserProfileFragment 替换 ProfileFragment 时,它将破坏现有的 ProfileFragment。所以当你按下返回按钮时,它会被重新创建,你必须在这里再次初始化你的寻呼机适配器。

以上是关于片段未附加到我的活动的主要内容,如果未能解决你的问题,请参考以下文章

java.lang.IllegalStateException:片段未附加到活动

尝试在未附加到活动时使用权限 API

Android在活动视图中附加片段获取片段已添加错误

片段未附加到相应的片段

未收到意向附加费

片段 MyFragment 未附加到 Activity