Android 如何阻止片段一直弹出到根片段?[导航组件]
我有一个由导航组件组成的侧抽屉,当我导航到一个片段中包含的片段并按下back键时,它会将整个堆栈弹出到根片段。让我解释一下 我从根片段导航到片段A(这两个片段都在导航XML文件中定义),然后从片段A导航到片段B 根片段-->片段A-->片段B 我已经尝试过定义menuCategory:除了导航项之外,使用action标记并在所述标记中定义“popupto”和“destination”参数,但仍然没有结果 我们将不胜感激Android 如何阻止片段一直弹出到根片段?[导航组件],android,android-fragments,navigation-drawer,jitpack,Android,Android Fragments,Navigation Drawer,Jitpack,我有一个由导航组件组成的侧抽屉,当我导航到一个片段中包含的片段并按下back键时,它会将整个堆栈弹出到根片段。让我解释一下 我从根片段导航到片段A(这两个片段都在导航XML文件中定义),然后从片段A导航到片段B 根片段-->片段A-->片段B 我已经尝试过定义menuCategory:除了导航项之外,使用action标记并在所述标记中定义“popupto”和“destination”参数,但仍然没有结果 我们将不胜感激 navController = Navigation.findNavCo
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();
}
使用
为了避免弹出整个backbackback。您可以使用
public void onBackPressed(){
super.onBackPressed();
startActivity(new Intent(getApplicationContext(), FragmentA.class));
}
这里startActivity()函数用于写入片段A,以便在片段B中单击“后退”按钮时,它将返回到片段A。
在Fragment B java类中编写上述所有代码。发布导航图和一些代码!我已经添加了导航UI和OnBackpress的代码我在OnBackpress中使用了这个conde,但它仍然会弹出到根片段。我有大约10个菜单项,然后在这些片段中有大约10个片段。我不认为为这么多的片段添加条件是有效的。
public void onBackPressed(){
super.onBackPressed();
startActivity(new Intent(getApplicationContext(), FragmentA.class));
}