0

我在我的一个应用程序中使用 Fragments 时遇到问题。该应用程序由一个主框架组成,当按下某些按钮时会替换内容片段(将其视为类似选项卡的布局)。到目前为止一切正常,但有时在切换片段后片段帧的全部内容会消失。解决此问题的一种方法是按下应用程序切换按钮将应用程序置于后台,然后再次将应用程序带回前台。这似乎重新绘制了屏幕,我可以再次看到我的片段。

视图层次转储给了我在屏幕上可以看到的相同内容,因此如果发生错误,片段框架是空的,但是当我在调试模式下检查布局时,一切都按预期工作。片段和视图已正确替换,但未显示在显示屏上。

我已经尝试过管理片段的不同方法(如显示/隐藏、替换、添加/删除),我尝试通过隐藏和显示或使完整的视图树无效并禁用硬件加速来解决它,但总是得到相同的结果。


编辑:作为请求一些代码示例,如果当前版本但我也尝试先添加所有片段,然后显示/隐藏具有相同结果的片段:

在 MainActivity 的 onCreate 中添加第一个 Fragment(它扩展了 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();
}
4

1 回答 1

0

好的...不能经常说...不要从除 UI-Thread 之外的其他线程操作 UI...并且通过aidl 的服务回调至少不总是从 UI 线程调用。

于 2013-11-05T12:45:07.170 回答