使用导航项和普通项导航抽屉

时间:2018-06-05 10:36:12

标签: android kotlin navigation-drawer android-architecture-components

我有一个导航抽屉,其中包含一些与新导航架构组件一起使用的项目,可以导航到不同的片段。 现在我有一个项目应该触发一个动作(没有导航),但由于NavigationUI已经在使用NavigationItemSelectedListener,我无法添加第二个。

NavigationUI.setupWithNavController(navView, findNavController(navHostFragment))

如何处理不会导航"。

的项目的点击

这似乎可以在不破坏导航的情况下工作:

navView.menu[3].setOnMenuItemClickListener

3 个答案:

答案 0 :(得分:0)

你没有在这里填写你的代码,为此,我认为你的NavigationItemSelectedListener上有Activity的实现。如果是,请尝试通过navView上的监听器,如下所示:

而不是:

    navigationView.setNavigationItemSelectedListener(this);

试一试:

    navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {
            //use just itens that "navigate"
            return false;
        }
    });

尝试使用某些代码更新您的问题

答案 1 :(得分:0)

我有同样的问题。我使用navigationView.menu.getItem(3).setOnMenuItemClickListenernavigationView.menu.findItem(R.id.action_delete_and_load).setOnMenuItemClickListener

答案 2 :(得分:0)

如果您想添加一个有动作但没有布局的项目,可以将您的项目添加到 activity_main_drawer.xml 文件中,如下所示。

     <item android:id="@+id/nav_test"
            android:icon="@drawable/ic_menu_test"
            android:title="Test" />

,在 MainActivity.kt 中,您可以根据其ID查找项目并设置clickListener

 navView.menu.findItem(R.id.nav_test).setOnMenuItemClickListener {
            Log.d("MainActivity", "nav test clicked")
            return@setOnMenuItemClickListener true
        }

PS:无需将操作/布局或项目添加到 mobile_navigation.xml 文件中。

快乐编码:)