2

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

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

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

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

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

请帮我!

4

1 回答 1

0

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

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

于 2013-04-12T17:04:12.507 回答