[英]onNavigationItemSelected() problems
when click on any menu item, there is no response, they suppose to navigate to Destination Fragment当单击任何菜单项时,没有响应,他们假设导航到 Destination Fragment
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
item.setChecked(true);
int id = item.getItemId();
switch (id) {
case R.id.mealFragment:
navController.navigate(R.id.mealFragment);
break;
case R.id.drinksFragment:
navController.navigate(R.id.drinksFragment);
break;
case R.id.dessertFragment:
navController.navigate(R.id.dessertFragment);
break;
}
drawer.closeDrawer(GravityCompat.START);
return true;
}
// setting up on time Navigation
private void setUpNavigation() {
drawer = findViewById(R.id.drawer_layout);
NavigationView navigationView = findViewById(R.id.nav_view);
navController = Navigation.findNavController(this, R.id.nav_host_fragment);
NavigationUI.setupActionBarWithNavController(this, navController, drawer);
NavigationUI.setupWithNavController(navigationView, navController);
navigationView.setNavigationItemSelectedListener(this);
}
after call setUpNavigation() .在调用 setUpNavigation() 之后。 App keeps sticking on mealFragment() as its start Destination on navigation graph
应用程序一直坚持使用 mealFragment() 作为导航图上的起始目的地
I was programmatically adding HeaderView
to NavigationView
Hence I already had NavigationView
我以编程方式将
HeaderView
添加到NavigationView
因此我已经有了NavigationView
I called navigationView.bringToFront();
我打电话给
navigationView.bringToFront();
Here is code snippet for context :这是上下文的代码片段:
NavigationView navigationView = (NavigationView) findViewById(R.id.navigation_view);
navigationView.bringToFront();
Did you set listner for navigationView as:您是否将导航视图的侦听器设置为:
NavigationView navigationView = (NavigationView) findViewById(R.id.navigation_view);
navigationView.setNavigationItemSelectedListener(this);
befor implementing the onNavigationItemSelected(MenuItem item) as:在实现 onNavigationItemSelected(MenuItem item) 之前:
@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.
int id = item.getItemId();
if (id == R.id.nav_camara) {
// Handle the camera action
} else if (id == R.id.nav_gallery) {
} else if (id == R.id.nav_slideshow) {
} else if (id == R.id.nav_manage) {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
Check with a Log.d() call if the onNavigationItemSelected event is fired or not.使用Log.d()调用检查onNavigationItemSelected事件是否被触发。 If not, check your the layout file for the clickable attribute:
如果没有,请检查布局文件的可点击属性:
<DrawerLayout
android:clickable="true"
android:focusable="true"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.