2013-11-04 60 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线程调用。