首先,我使用支持库(android-support-v4.jar)来使用片段。
我有一个包含片段的布局活动。所以当活动开始时,它调用我的片段的onCreateView方法。在这个方法中,我膨胀了一个布局(包含一个linearlayout和一个listview)并返回那个膨胀的视图。
因此,当活动开始时,它会加载我的listview并调用webservice,并响应webservice加载listview上的数据。
每件事都像预期的那样完美。 但问题是当我按下后退按钮并重新启动活动时,它不会将我的片段附加到活动,并在我尝试调用getActivity()时抛出IllegalStateException。当我尝试调用片段的getView()方法时,也会抛出NullPointerException。
还有一点需要注意的是,当我从TraceView工具中看到视图层次结构时,它会在那里显示我的片段视图。
请帮助我!
答案 0 :(得分:0)
我找出了问题,因此也解决了问题。 我使用Observer接口来获取Web服务的响应。因此,当我第一次启动活动时,我将我的片段活动添加(或注册)到Observable类并收到响应但忘记删除(或取消注册)我的片段对象。因此,当活动和片段重新启动它时,再次将我的片段对象添加到Observable类中,所以现在Observable类现在有两个片段实例,第一个片段已被销毁,当前片段和Web服务被调用,它首先响应被破坏的片段和那个时候它会崩溃。所以我在片段的onDestroy方法中从Observable类中删除了片段实例,它现在正在工作。
所以问题不在于片段,而在于片段的多个实例。