我正在使用android Studio模板中的Android导航抽屉导航菜单。如何根据id导航到不同的活动。
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.
mAppBarConfiguration = new AppBarConfiguration.Builder(
R.id.nav_home, R.id.nav_gallery, R.id.nav_slideshow,
R.id.nav_tools, R.id.nav_share, R.id.nav_send)
.setDrawerLayout(drawer)
.build();
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration);
NavigationUI.setupWithNavController(navigationView, navController);
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.admin_panel_navigation, menu);
return true;
}
@Override
public boolean onSupportNavigateUp() {
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
return NavigationUI.navigateUp(navController, mAppBarConfiguration)
|| super.onSupportNavigateUp();
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
return NavigationUI.onNavDestinationSelected(item, navController)
|| super.onOptionsItemSelected(item);
}

我尝试了下面这组代码,但它不执行单击操作。
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
// Handle navigation view item clicks here.
switch (item.getItemId()) {
case R.id.nav_maths: {
//do somthing
break;
}
}
//close navigation drawer
mDrawerLayout.closeDrawer(GravityCompat.START);
return true;
}我知道我漏掉了一些东西,但我找不到解决方案。有谁能帮帮我。
发布于 2019-08-25 07:05:00
根据Tie destinations to menu items section,导航使用您添加到菜单xml中的in,将它们与导航图xml文件中的目的地进行匹配。
所以如果你有一个菜单项,比如
<item
android:id="@+id/nav_maths"
android:icon="@drawable/maths"
android:title="@string/maths" />并希望它启动一个不同的活动,您可以将<activity>目的地添加到导航图中:
<activity
android:id="@+id/nav_maths"
android:name="com.your.package.MathsActivity" />因为它们具有相同的ID,所以当您单击菜单中的该项时,您的活动将启动。
请注意,导航侧重于只有一个活动,因此活动目的地应该被视为图形的出口点-第二个活动将有其自己的导航图,等等,这与第一个活动完全分开。
https://stackoverflow.com/questions/57639024
复制相似问题