我在其中一个应用程序中使用Fragments时遇到问题。 该应用程序由一个主框架组成,当按下某些按钮时,内容片段被替换(将其视为类似于标签的布局)。 到目前为止,一切工作正常,但有时片段帧的整个内容在切换片段后消失。修复此问题的一种方法是按应用程序切换按钮将应用程序置于后台,然后再将应用程序恢复到前台。这似乎重绘了屏幕,我可以再次看到我的碎片。
视图层次结构转储给出了与屏幕上可见的相同的结果,以便在发生错误时片段帧为空,但是当我在调试模式下检查布局时,一切都按预期工作。片段和视图已正确替换,但未在显示屏上显示。
我已经尝试过不同的方法来管理片段(如显示/隐藏,替换,添加/删除),我试图通过隐藏和显示或使整个视图树无效并禁用硬件加速来解决它,但总是使用相同的结果。
编辑:请求一些代码示例,如果当前版本,但我也尝试先添加所有片段,然后显示/隐藏具有相同结果的片段:
在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 :(得分:0)
好的......经常说不够......不要在UI-Thread之外的其他线程中操作UI ...而且至少不总是从UI线程中调用通过aidl的服务回调。