具有BottomNavigationView和多个片段的NavigationUI:禁用ActionBar上/后按钮

时间:2019-12-14 11:51:58

标签: android android-jetpack android-jetpack-navigation

我有一个BottomNavigationView和一组片段,它们是它的第一级目标。我想从这些片段的ActionBar禁用后退按钮。我该如何实现?

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        navView = findViewById(R.id.nav_view);
        NavHostFragment navHostFragment = (NavHostFragment) getSupportFragmentManager().findFragmentById(R.id.nav_host_fragment);
        if (navHostFragment != null) {
            NavigationUI.setupWithNavController(navView, navHostFragment.getNavController());
            NavigationUI.setupActionBarWithNavController(this, navHostFragment.getNavController());
        }
    }

R.layout.activity_main没有明确包含工具栏,我正在使用以下主题:Theme.MaterialComponents.Light.DarkActionBar

1 个答案:

答案 0 :(得分:0)

在您的设置(底部导航视图+工具栏+每个底部栏项目的片段)中,正确实施后应该没有向上/向后按钮。实施需要多个步骤,请在实施中参考此https://github.com/android/architecture-components-samples/tree/master/NavigationAdvancedSample-它基本上具有完整的解决方案。关键是要使用https://github.com/android/architecture-components-samples/blob/master/NavigationAdvancedSample/app/src/main/java/com/example/android/navigationadvancedsample/NavigationExtensions.kt

PS .:我不得不提到,系统后退按钮在此设置中有效(应该如此)。它的工作原理是这样的:如果您位于底部栏的第二个选项卡上,并且用户按回系统,则用户将导航至底部栏的第一个选项卡。仅当用户在底部栏的第一个选项卡上按System时,该应用程序才会关闭。