Android jetpack组件-导航抽屉上的toast单击
我正在使用导航jetpack,并已设置导航抽屉。一切正常。但问题是,当用户单击“导航共享”时,我想显示一个祝酒词,但它没有显示。。。 这是我如何制作导航抽屉的Android jetpack组件-导航抽屉上的toast单击,android,android-jetpack,Android,Android Jetpack,我正在使用导航jetpack,并已设置导航抽屉。一切正常。但问题是,当用户单击“导航共享”时,我想显示一个祝酒词,但它没有显示。。。 这是我如何制作导航抽屉的 DrawerLayout drawer = findViewById(R.id.drawer_layout); NavigationView navigationView = findViewById(R.id.nav_view); navigationView.setNavigationItemSel
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>
我想要点击toast…我看不出我遗漏了什么…使用这个
NavigationView navigationView = findViewById(R.id.nav_view);
navigationView.bringToFront()
navigationView.setNavigationItemSelectedListener(this);
如果有人想要答案,我做了一些研究,终于找到了解决办法,希望能有所帮助
NavigationView navigationView = findViewById(R.id.nav_view);
MenuItem shareItem = navigationView.getMenu().findItem(R.id.nav_share);
shareItem.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
Toast.makeText(LauncherActivity.this, "click", Toast.LENGTH_SHORT).show();
//do as you want with the button click
DrawerLayout drawer = findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
});
我也有你的问题,并提出了解决办法
NavController navController = Navigation.findNavController(this, R.id.nav_host_home);
NavigationUI.setupWithNavController(navigationView, navController);
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
int id = menuItem.getItemId();
if (id == R.id.nav_share) {
Toast.makeText(getApplicationContext(), "nav_share", Toast.LENGTH_SHORT).show();
}
NavigationUI.onNavDestinationSelected(menuItem, navController);
drawerLayout.closeDrawer(Gravity.RIGHT);
return true;
}
});
如果有人仍在搜索关于如何连接导航目的地以及如何处理导航抽屉中的单击菜单项的答案,则此处已给出答案:尝试调试它,但当我这样做时…我的onNavigationItemSelected(@NonNull MenuItem MenuItem)虽然我已经完成了navigationView.setNavigationItemSelectedListener(此);,但函数从未执行过。。
NavigationUI.setupWithNavController()
调用正在内部调用setNavigationItemSelectedListener()
本身,这将覆盖您先前的调用。不会调用您的onNavigationItemSelected()
,因为导航框架正在处理NavigationView
单击。@MikeM。如果我添加navigationView.setNavigationItemSelectedListener(此);在我的onCreate()的最后一页上,会显示toast…但现在我无法导航到我的仪表板、计划或个人资料。。。。我如何才能显示toast并能够在片段之间导航..您能详细说明吗?好的,因为这样您的调用将覆盖NavigationUI.setupWithNavController()
设置的调用。为什么要在那里显示土司
?那肯定不是你最终想要做的,是吗?
NavController navController = Navigation.findNavController(this, R.id.nav_host_home);
NavigationUI.setupWithNavController(navigationView, navController);
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
int id = menuItem.getItemId();
if (id == R.id.nav_share) {
Toast.makeText(getApplicationContext(), "nav_share", Toast.LENGTH_SHORT).show();
}
NavigationUI.onNavDestinationSelected(menuItem, navController);
drawerLayout.closeDrawer(Gravity.RIGHT);
return true;
}
});