2

首先我使用支持庫(android-support-v4.jar)來使用片段。片段不附加到我的活動

我有一個佈局包含一個片段的活動。所以當活動開始時,它會調用片段的onCreateView方法。在這種方法中,我膨脹了一個佈局(包含一個線性佈局和一個列表視圖),並返回該膨脹的視圖。

所以當活動開始時,它加載我的列表視圖並調用web服務,並在web服務的響應中加載列表視圖上的數據。

每件事情都像預期的一樣完美。 但問題是當我按下後退按鈕並重新啓動活動,然後它不會將我的片段附加到活動並在嘗試調用getActivity()時引發IllegalStateException。當我嘗試調用片段的getView()方法時,還會拋出NullPointerException。

還有一點要提到的是,當我從TraceView工具看到視圖層次結構時,它顯示了我的片段視圖。

請幫幫我!

+0

在這段時間之後有什麼運氣?我有類似問題 – quinestor

+0

我已在下面發佈了答案。可能是它可以幫助你 – Pirate

+0

謝謝你,我已閱讀它 – quinestor

回答

0

我想出了問題,因此解決了它。 我正在使用Observer接口從Web服務獲取響應。所以當我第一次開始活動時,我向Observable類添加(或註冊)了我的片段活動,並收到響應,但忘記在片段對象銷燬時刪除(或取消註冊)我的片段對象。所以當活動和片段重新啓動時,再次將我的片段對象添加到Observable類中,所以現在Observable類現在有兩個片段實例,第一個片段已被銷燬,並且當前片段和Web服務被調用,它首先響應被銷燬的片段,那個時候它會崩潰。所以我從片段的onDestroy方法中的Observable類中移除了片段實例,現在它正在工作。

所以問題不在於片段,而在於片段的多個實例。

+0

你如何診斷相同fragmetn的兩個實例我得到相同的錯誤,在viewpager + fragmetn的情況下 – Erum

+0

你能解釋一下你的情況發生了什麼,以便我能更好地理解情況。 – Pirate

+0

我有很多fragmetns的主要活動--->其中一個片段(profileFragment)包含viewpager + designtablayout --->並且它的viewpager適配器已從fragmetnts初始化----> Profilefragment包含單擊按鈕上的按鈕即時從本代碼repalcing片段http://pastie.org/10361207此外,新的片段包含後退鍵.....>我點擊後退鍵,我只是從fragmetns – Erum