2013-11-04 65 views
0

我有使用片段在我的應用程序之一出現問題。 該應用包括其中當按下某些按鈕的內容片段替換一個主框架(把它看成是一個標籤狀的佈局)的。 到目前爲止,一切正常,但有時片段框架的全部內容在切換片段後消失。修復此問題的一種方法是按下應用程序切換按鈕以將應用程序置於後臺,然後再將應用程序重新置於前臺。這似乎是重畫屏幕,我可以再次看到我的片段。片段消失

視圖層次轉儲給了我一樣可以在屏幕上可以看到,這樣的片段幀是空的,如果錯誤發生,但是當我檢查在調試模式下所有的佈局按預期工作。碎片和視圖被正確替換,但不顯示在顯示器上。

我已經嘗試了不同的方法來管理碎片(如顯示/隱藏,替換,添加/刪除),我試圖通過隱藏和顯示或使整個視圖樹無效並禁用硬件加速來解決它,但總是使用相同的結果。


編輯:正如requestet一些代碼示例,如果當前versionbut我也嘗試首先將所有的片段,然後顯示/隱藏的片段具有相同的結果:

在MainActivity的的onCreate添加第一塊碎片(其延伸FragmentActivity):

final FragmentTransaction tx = getSupportFragmentManager().beginTransaction(); 
    tx.add(R.id.tabContent, new MyFirstTab()); 
    tx.commit(); 

更改片段(確保從UI線程調用):

private void changeTab(final Fragment tab) { 
FragmentManager fm = getSupportFragmentManager(); 
final FragmentTransaction tx = fm.beginTransaction(); 
tx.replace(R.id.tabContent, tab); 
tx.commit(); 
} 
+0

發佈一些代碼,也許我們可以幫助你。 :) – MartinHaTh

+0

它現在似乎已經修復了...我將在明天進行驗證。我在其中一個片段中有一個子組件,它正在從服務回調中更新文本字段。刪除後,我現在沒有更多的失望的意見... – Jan

回答

0

好吧......這不能說往往不夠......不要操縱其他線程不是UI線程...和服務回調UI通過AIDL是至少不總是從UI線程調用。