当前位置: 首页 > 知识库问答 >
问题:

弹出碎片后导航抽屉打开

全兴运
2023-03-14

所以我有一个活动,其中有一个片段,片段有一个导航抽屉和页面的内容。当我打开抽屉并单击一个项目时,片段被替换为一个新片段。当我按下后退按钮时,我在片段管理器上调用popBackStack,它返回到第一个片段,但导航抽屉是打开的。

有几件事要注意:当按下抽屉中的一个项目时,我在抽屉布局上调用关闭抽屉,当片段被替换时抽屉关闭。如果我按下操作栏中的UP按钮,我可以用新的主片段替换片段容器,但我更喜欢能够将片段从堆栈中弹出。

为什么当我回到主碎片时抽屉是开着的?

在抽屉项目的单击侦听器中:

case 4:
        drawerLayout.closeDrawers();
        Fragment aboutFragment = new AboutFragment();
        fragmentTransaction.replace(R.id.fragment_container, aboutFragment, "AboutFragment");
        fragmentTransaction.addToBackStack(null);
        fragmentTransaction.commit();
        break;

这是动作栏中的向上箭头,它可以工作,但很粗糙:

case android.R.id.home:
    getFragmentManager()
            .beginTransaction()
            .replace(R.id.fragment_container, new MainActivityFragment())
            .commit();
    break;

共有2个答案

宋和颂
2023-03-14

在第一个片段的onCreateView中,只需关闭抽屉mDrawerLayout。closeDrawer(重力,左);

全飞扬
2023-03-14

替换

drawerLayout.closeDrawers();

具有

drawerLayout.closeDrawer();
 类似资料:
  • 我开始创建一个应用程序,它使用一个活动(导航抽屉)和许多片段。但我无法使用工具栏上的“后退”按钮从片段中导航回来。硬件后退按钮工作正常。我知道我需要覆盖选项ItemSelected,捕捉android。R、 id.home,检查后堆栈中是否有内容,然后弹出它。在更改片段后,“burger”按钮变为“back arrow”,但当我单击它时,选项ItemSelected将打开NavigationDra

  • 我有一个关于片段管理的问题。 我已经编写了一个基于碎片的抽屉活动。每次点击菜单项后,您都会看到一个空片段。 我如何实现这一点?

  • 在阅读了关于片段和活动的文档和讨论后,我想我已经把情况弄清楚了。 活动应该为用户提供一个屏幕,用户可以在其中工作。导航到其他屏幕通常会破坏活动。 片段应该提供很少或单个功能组件,可以在活动中再次使用。片段的内容应该相互独立地工作,因此可以在多个活动中重用。 虽然这一切似乎都有道理,但有一件事我无法理解: 如果您创建一个新的Android应用程序,并选择创建Android导航抽屉应用程序的选项,为什

  • 我已经在我的项目中添加了一个导航抽屉活动,并尝试将项目作为片段添加。这就是我在主要活动中所做的。 默认片段是Home,它工作正常,正如预期的那样,但其他片段与Home片段重叠。(HomeFragment是唯一工作正常的)。我在每个片段类中都做过这样的事情: 我看不出错误在哪里。一切看起来都很好,但所有其他片段都显示在HomeFragment上。

  • 我想使用Android Studio的默认导航抽屉活动(v.3.5)。创建此默认活动后(New Project-- 经过一整天的研究,我在Stackoverflow上发现了以下问题:NavigationView点击事件非常相似,但没有得到真正的回答。下一个有趣的问题是,如果我使用按钮导航活动,这个模板可能会工作,我无法真正找出与导航抽屉活动模板的区别。我还发现了其他几种适用于旧模板的解决方案。我不

  • 当我在导航抽屉中的不同片段之间切换时,我试图保存导航抽屉片段上的状态。例如:我从片段A开始触发一些事件,然后切换到片段B。然后我想在从片段B切换回片段A时看到片段A的相同状态。 我尝试使用onSavedInstanceState(Bundle savedInstanceState),但只有当片段生命周期中的方向发生变化时才会调用它。每当我切换到新片段时,都会创建一个新片段,我不知道如何从片段中保存