rey*_*ane 2 java android navigation-drawer
我的导航菜单中有 8 个项目。我为其中 5 个设置了片段,我想为最后 3 个设置吐司。当我不设置案例 2 时,案例 1 运行良好。但是当我设置案例 2 时,案例 1 不起作用。
情况1 :
DrawerLayout drawer = findViewById(R.id.drawer_layout);
NavigationView navigationView = findViewById(R.id.nav_view);
// Passing each menu ID as a set of Ids because each
// menu should be considered as top level destinations.
//define in mobile_navigation.xml
mAppBarConfiguration = new AppBarConfiguration.Builder(
R.id.nav_home, R.id.nav_update_data, R.id.nav_notifications,
R.id.nav_stop, R.id.nav_change_pass)
.setDrawerLayout(drawer)
.build();
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration);
NavigationUI.setupWithNavController(navigationView, navController);
Run Code Online (Sandbox Code Playgroud)
案例2:
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId())
{
case R.id.nav_exit:
{
Toast.makeText(Main2Activity.this,"gbfg",Toast.LENGTH_SHORT).show();
break;
}
case R.id.nav_get_update_app:
{
break;
}
case R.id.nav_about_us:
{
break;
}
}
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
您必须使用NavigationUI.onNavDestinationSelected回调来处理此问题。检查以下:
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
boolean handled = NavigationUI.onNavDestinationSelected(item, navController);
if (!handled) {
switch (item.getItemId()) {
case R.id.nav_exit: {
Toast.makeText(Main2Activity.this, "gbfg", Toast.LENGTH_SHORT).show();
break;
}
case R.id.nav_get_update_app: {
break;
}
case R.id.nav_about_us: {
break;
}
}
}
drawer.closeDrawer(GravityCompat.START);
return handled;
}
});
Run Code Online (Sandbox Code Playgroud)
除此之外,您必须在调用NavigationItemSelectedListener后调用,setupWithNavController如下所示:
NavigationUI.setupWithNavController(navigationView, navController);
navigationView.setNavigationItemSelectedListener(...);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1394 次 |
| 最近记录: |