在导航抽屉中切换碎片时,短黑闪烁

时间:2014-12-31 05:26:09

标签: android flash android-fragments navigation

现在是早上7点,我整晚都在搜索。 我有一个Nav抽屉和列表,它动态地将片段添加到Main活动并切换到单击的片段。

我是新手,所以让我试着解释一下我的尝试:

  1. 当我第一次开始这个项目时,它很好,现在每当我切换时我都会有黑色闪光,我找不到任何理由。 我认为在碎片的onCreate中是“沉重的”工作,但除了加载视图和设置他们的文本/图像之外没有太多工作,除了包含计时器的1个片段我还有4个其他什么都不做但是现有数据。

  2. 其中1个片段在代码中完全为空,它也会闪烁。

  3. 我在交易中有动画,但它曾经工作,而不是闪光灯。我试着删除它,但我仍然得到了闪光灯。
  4. 我已经阅读过关于SurfaceView的内容,但对于我的项目来说这似乎太复杂了,这只是一个简单的时间和金钱跟踪器。
  5. 重要说明: 当我单击“后退”按钮时,没有闪光,动画运行顺畅。 我正在我自己的设备上测试Galaxy s5。

    到目前为止,我所读到的内容并没有帮助: Whole screen turns into black for a short while when first switching between Fragment and MapFragment

    Starting activity shows black flash

    Switching between Android Navigation Drawer image and Up caret when using fragments

    https://code.google.com/p/gmaps-api-issues/issues/detail?id=4639

    **

    • EDIT

    ** 我想我有一个领先优势: 闪烁可能是由我在提交新片段后立即调用的closeDrawer引起的。 当抽屉打开时,它背后的ui变暗,我禁用了那个近距离通话,当我更换碎片时没有闪烁。

    我不知道如何修复它。

1 个答案:

答案 0 :(得分:1)

在上次编辑后,我对问题有了更好的描述,并找到了一个很好的解决方案(至少对我而言) 链接: DrawerLayout's item click - When is the right time to replace fragment?

private class DrawerItemClickListener implements OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, final int position, long id) {
    drawerLayout.closeDrawer(drawerList);
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            switchFragments(position); // your fragment transactions go here
        }
    }, 200);
}

}