Android 导航从第一个片段中删除工具栏
Android Navigation remove toolbar from first fragment
我正在尝试从 google 实施新的 Jetpack Navigation 框架,但我 运行 遇到了问题。我想将我的第一个片段用作登录页面,并且不想在其中包含工具栏。如何从其中一个片段中删除工具栏,然后为后续片段添加它?
编辑:尝试查看 AppBarConfiguration,但这似乎只会影响后退箭头是否显示
终于弄清楚怎么做了。根据 android 文档,您必须将 OnDestinationChangedListener 添加到导航控制器,然后您可以在所有需要更改常量 UI 元素的不同目的地上进行切换。
navController = Navigation.findNavController(this, R.id.nav_host_fragment);
final Toolbar toolbar = findViewById(R.id.toolbar);
navController.addOnDestinationChangedListener(new NavController.OnDestinationChangedListener() {
@Override
public void onDestinationChanged(@NonNull NavController controller, @NonNull NavDestination destination, @Nullable Bundle arguments) {
int id = destination.getId();
switch (id) {
case R.id.mainFragment:
toolbar.setVisibility(View.GONE);
break;
default:
toolbar.setVisibility(View.VISIBLE);
break;
}
}
});
我正在尝试从 google 实施新的 Jetpack Navigation 框架,但我 运行 遇到了问题。我想将我的第一个片段用作登录页面,并且不想在其中包含工具栏。如何从其中一个片段中删除工具栏,然后为后续片段添加它?
编辑:尝试查看 AppBarConfiguration,但这似乎只会影响后退箭头是否显示
终于弄清楚怎么做了。根据 android 文档,您必须将 OnDestinationChangedListener 添加到导航控制器,然后您可以在所有需要更改常量 UI 元素的不同目的地上进行切换。
navController = Navigation.findNavController(this, R.id.nav_host_fragment);
final Toolbar toolbar = findViewById(R.id.toolbar);
navController.addOnDestinationChangedListener(new NavController.OnDestinationChangedListener() {
@Override
public void onDestinationChanged(@NonNull NavController controller, @NonNull NavDestination destination, @Nullable Bundle arguments) {
int id = destination.getId();
switch (id) {
case R.id.mainFragment:
toolbar.setVisibility(View.GONE);
break;
default:
toolbar.setVisibility(View.VISIBLE);
break;
}
}
});