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

如何阻止片段一直弹出到根片段?[导航组件]

李勇
2023-03-14

我有一个由导航组件组成的侧抽屉,当我导航到一个片段中包含的片段并按下返回键时,它会将整个堆栈弹出到根片段。让我解释一下。

我从根片段导航到片段A(这两个片段都在导航XML文件中定义),然后从片段A导航到片段B

根片段---

我尝试过定义menuClass:从属于我的导航项,使用操作标签并在所述标签中定义“popupto”和“目的地”参数,但仍然没有结果。

我们将不胜感激。

  navController = Navigation.findNavController(this, R.id.nav_host_fragment);

    if(prefsUtils.getFromPrefs(Keys.roleName).equals("PA") ||prefsUtils.getFromPrefs(Keys.roleName).equals("RSM"))
    {
        navController.setGraph(R.navigation.mobile_navigation);
        mAppBarConfiguration = new AppBarConfiguration.Builder(
                R.id.nav_dashboard,R.id.nav_createOrder)
                .setDrawerLayout(binding.drawerLayout)
                .build();
    }

    else if (prefsUtils.getFromPrefs(Keys.roleName).equals("TP"))
    {
        navController.setGraph(R.navigation.mobile_navigation_tp);
        binding.navView.getMenu().clear();

        binding.navView.inflateMenu(R.menu.activity_main_drawer_tp);
        mAppBarConfiguration = new AppBarConfiguration.Builder(
                R.id.nav_dashboardTP)
                .setDrawerLayout(binding.drawerLayout)
                .build();
    }

    NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration);
    NavigationUI.setupWithNavController(binding.navView, navController);

 @Override
public void onBackPressed() {
    super.onBackPressed();
    navController.navigateUp();
}

共有2个答案

皇甫礼骞
2023-03-14

您可以使用以下命令控制当前屏幕(片段B)的位置

 public void onBackPressed(){


 super.onBackPressed();
startActivity(new Intent(getApplicationContext(), FragmentA.class));   


}

这里startActivity()函数写入片段A,以便在片段B中单击“后退”按钮时将其反向返回到片段A。在片段B java类中编写上述所有代码。

卓胜
2023-03-14

使用

findNavController().navigateUp()

以避免出现整个后退。

 类似资料:
  • 我正在我的应用程序中尝试导航架构组件。早些时候,我使用片段事务来实现以下功能。基本上,我想从导航。 碎片- 如果我正在使用导航组件并尝试 然后结果是FragmentA被FragmentB替换并且背景片段不可见。 我想知道一个解决方案,如果导航架构组件允许的话。 附言:我听说过嵌套导航主机,但从内部使用它好吗。 更新: FragmentB将有进一步交易的行动,例如: 碎片- 当用户按下后退按钮时,片

  • 如何从Jetpack撰写屏幕转到fragment,从fragment转到Jetpack编写屏幕?我用喷气背包组成导航?有什么帮助吗?

  • 在我的应用程序中,我使用了一个活动和四个片段。在这个应用程序中,我使用了导航组件。我的片段加载顺序是A- 在设备背面的碎片D中,按下按钮,我想从背面移除碎片C,以便碎片B可以打开。有人建议我怎么做吗提前谢谢 这是我的导航图。xml

  • 我试着从一个片段到主要片段。编译器不喜欢我的代码,但我不确定是什么问题。转换片段的最佳实践是什么? //这是我要导航到的主片段的xml 2019-07-12 17:49:45.091 959 4-9594/com.example.cribb E/AndroidRuntime:致命异常:主进程:com.example.cribb,PID:9594 Android.content.res.resour

  • 您好,我已经使用导航组件和导航图从一个片段导航到另一个片段,我想要的是防止onBack完全按下,这样当用户单击onBack时,应用程序将退出。我正在从注册片段导航到主页片段。 这是导航图中的代码 这是我的代码,当点击注册按钮时,在注册片段中导航

  • 我使用底部导航视图和导航组件。请告诉我如何在切换到另一个选项卡并返回旧选项卡后不销毁片段?例如,我有三个选项卡-A、B、C。我的开始选项卡是A。导航到B后,然后返回A。当我返回选项卡A时,我不希望它被重新创建。怎么做?谢谢