【发布时间】:2022-03-09 19:31:29
【问题描述】:
我正在使用导航喷气背包并设置了导航抽屉。每件事都很好。但问题是我想在用户单击“nav_share”时显示祝酒词,但没有显示...
这是我制作导航抽屉的方法
DrawerLayout drawer = findViewById(R.id.drawer_layout);
NavigationView navigationView = findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
mAppBarConfiguration = new AppBarConfiguration.Builder(
R.id.navigation_home, R.id.navigation_dashboard, R.id.navigation_plan, R.id.navigation_notifications)
.setDrawerLayout(drawer)
.build();
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration);
NavigationUI.setupWithNavController(navigationView, navController);
我的导航抽屉菜单是
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:showIn="navigation_view">
<group android:checkableBehavior="single">
<item
android:id="@+id/nav_home"
android:icon="@drawable/ic_menu_camera"
android:title="@string/menu_home" />
<item
android:id="@+id/nav_gallery"
android:icon="@drawable/ic_menu_gallery"
android:title="@string/menu_gallery" />
<item
android:id="@+id/nav_slideshow"
android:icon="@drawable/ic_menu_slideshow"
android:title="@string/menu_slideshow" />
<item
android:id="@+id/nav_tools"
android:icon="@drawable/ic_menu_manage"
android:title="@string/menu_tools" />
</group>
<item android:title="Communicate">
<menu>
<item
android:id="@+id/nav_share"
android:icon="@drawable/ic_menu_share"
android:title="@string/menu_share" />
<item
android:id="@+id/nav_send"
android:icon="@drawable/ic_menu_send"
android:title="@string/menu_send" />
</menu>
</item>
</menu>
终于:
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
int id = menuItem.getItemId();
if (id == R.id.nav_share)
Toast.makeText(LauncherActivity.this, "Click", Toast.LENGTH_SHORT).show();
DrawerLayout drawer = findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
我想要那个点击吐司……我看不到我错过了什么……
【问题讨论】:
-
尝试调试它
-
我累了,但是当我这样做时......我的 onNavigationItemSelected(@NonNull MenuItem menuItem) 函数从未执行,尽管我已经完成了 navigationView.setNavigationItemSelectedListener(this); ..
-
NavigationUI.setupWithNavController()调用在内部调用setNavigationItemSelectedListener()本身,它会覆盖您之前进行的调用。您的onNavigationItemSelected()不会被调用,因为导航框架正在处理NavigationView点击。 -
@MikeM。如果我添加 navigationView.setNavigationItemSelectedListener(this);在我的最后一个 onCreate() 然后显示吐司……但现在我无法导航到我的仪表板、计划或个人资料……我怎样才能显示吐司并能够在我的片段之间导航……你能详细说明一下吗??
-
对,因为这样您的调用将覆盖
NavigationUI.setupWithNavController()设置的调用。为什么要在那里显示Toast?这肯定不是你最终想要做的,是吗?