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