在NavigationUI.setupWithNavController()方法中添加一个参数,即将onStartDestinationChanged()方法的返回值改为true。示例代码如下:
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
NavigationUI.setupWithNavController(navigationView, navController);
navController.addOnDestinationChangedListener((controller, destination, arguments) -> {
if (destination.getId() == R.id.nav_home) {
NavigationUI.navigateUp(navController, drawerLayout);
}
});
NavigationUI.setupActionBarWithNavController(this, navController, drawerLayout);
// 添加参数以防止导航图在onResume后重置
NavigationUI.setupWithNavController(toolbar, navController,
new AppBarConfiguration.Builder(navController.getGraph())
.setFallbackOnNavigateUpListener(this::onSupportNavigateUp)
.setIsBottomNavigation(true)
.build(),
true);
这样做的效果是,当我们从后台返回应用程序时,导航图不会被重置,而是保留在当前位置。