2012-09-07 71 views
0

我在使用支持庫執行我的程序實例碎片問題。這裏是尚未見成效我試圖執行的任務和我的一些嘗試的簡要說明:片段不正確實例

我的應用程序的UI如有變更,以滿足用戶的喜好。爲了做到這一點,我爲每個不同的佈局使用Fragment,並根據用戶的指示在給定的時間更換UI中的活動片段。這裏有一些方法我試過(但失敗了)這樣做:

  • 我試着添加片段作爲非靜態內部類在我的活動。只要用戶沒有旋轉設備,這種方法就行得通。一旦用戶旋轉設備時,應用程序崩潰(這是正確的肖像 - >景觀旋轉和Landscape -> Portrait rotation)在使用模擬器檢查問題,我得到了一個InstantiationException我SO檢查一些幫助,這導致我:

  • 將Fragment實現爲靜態內部類當Fragment啓動時,它將擴展它的佈局,然後從Activity的控制流中,我可以對Fragment的子視圖執行一些操作(特別是將按鈕添加到按鈕中)不幸的是,這並沒有奏效,因爲我不能使用[frag_name].getView().findViewById()來引用片段的子視圖,關於在非靜態上下文中引用靜態對象,我再一次檢查了SO,我到:

  • 從活動完全實現的片段作爲一個單獨的類。這似乎是developer.android.com上的Dev文檔推薦的內容。一旦這樣做,似乎一切編譯罰款,但是當我嘗試指的是片段的子視圖(再次使用[frag_name].getView().findViewById()),我得到一個NullPointerException異常。當我添加的System.out.println()語句在我的代碼,以查找出到底發生了什麼,我發現,在該片段中內onCreateView打印語句永遠不會被解僱,這意味着onCreateView永遠不會得到觸發。

所以現在,我卡住了。我在做什麼錯誤?這樣做的確切實現並不像從經驗中學習東西那麼重要,所以我可以在Android開發中更好地工作,所以如果單獨的類比靜態類更好,反之亦然,我並不關心我使用的是什麼

謝謝。

+1

請張貼活動的代碼。 – jeet

+0

而且片段類也是 – Aviral

+0

@jeet:該活動約400行,我寧願將它關閉公有領域;準確地說,你需要看哪部分代碼? – Ertai87

回答