我可以从AppBarConfiguration改变topleveldestinationid吗? &g



我有一个countryesfragment,这个fragment首先启动(start destination)

我使用下面的代码隐藏后退按钮

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

用户也可以通过进入SettingsFragment来改变国家,在这个SettingsFragment里面有一个叫做change The country的按钮,点击后用户会导航到belongesfragment。

如果用户来自SettingsFragment,我想在countryesfragment中显示后退按钮,否则隐藏它。

问题是后退按钮在所有情况下都是隐藏的

是否可以在AppBarConfiguration或任何更好的解决方案中修改topleveldestinationid ?

这个技巧解决了这个问题

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());
}
...
}

以前,我设置NavigationUI在国家片段,但现在设置NavigationUI在HomeFragment。

相关内容

  • 没有找到相关文章

最新更新