android-fragments 我可以从AppBarConfiguration变更topLevelDestinationIds吗?

bprjcwpo  于 2022-11-13  发布在  Android
关注(0)|答案(1)|浏览(112)

我有CountriesFragment,此片段将首先启动(启动目标)
我用下面的代码隐藏了后退按钮

NavigationUI.setupWithNavController(materialtoolbar, navController, new AppBarConfiguration.Builder(
                R.id.navigationMain_fragment_countriesFragment).build());

用户还可以通过进入SettingsFragment更改国家,在此SettingsFragment内有一个名为“更改国家”的按钮,单击该按钮后,用户将导航至CountriesFragment。
如果用户来自SettingsFragment,我想在CountriesFragment中显示后退按钮,否则隐藏它。
问题是后退按钮在所有情况下仍然是隐藏的
是否可以在AppBarConfiguration中修改topLevelDestinationIds或任何更好的解决方案?

tzdcorbm

tzdcorbm1#

"这个小把戏解决了问题"

private boolean isToolbarLinkedWithNavigationUI;

@Override
public void onDestinationChanged(@NonNull NavController navController, @NonNull NavDestination navDestination, @Nullable Bundle bundle) {
    if (navDestination.getId() == R.id.navigationMain_homeFragment && !isToolbarLinkedWithNavigationUI) {
        isToolbarLinkedWithNavigationUI = true;
        NavigationUI.setupWithNavController(activityMainBinding.toolbar, navController, new AppBarConfiguration.Builder(
            R.id.navigationMain_homeFragment
        ).setOpenableLayout(activityMainBinding.getRoot()).build());
    }

...

}
  • 以前,我是在CountriesFragment内设置NavigationUI,但现在是在HomeFragment内设置NavigationUI *

相关问题