Боковое меню MenuItem clickListener
public class MainActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener{
private AppBarConfiguration mAppBarConfiguration;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
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_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);
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
System.out.println("onNavigationItemSelected in class "+menuItem.toString());
return false;});
//View menuItem = findViewById(R.id.nav_tools);
// System.out.println("r-t-r "+menuItem.toString());
// menuItem.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
// @Override
// public boolean onMenuItemClick(MenuItem menuItem) {
// System.out.println("menu7778 99 "+menuItem.toString());
// return false;
// }
// });
// navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
// @Override
// public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
// System.out.println("menu7778 99 "+menuItem.toString());
//// onNavigationItemSelected(menuItem);
//// super.notify();
// return true;
// }
// });
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, 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 onNavigationItemSelected(@NonNull MenuItem menuItem) {
System.out.println("onNavigationItemSelected @Override"+menuItem.toString());
return true;
}
}
Подскажите пожалуйста почему здесь 55 строчка View menuItem = findViewById(R.id.nav_tools); не может найти объект и выдаёт NULL? или как назначить R.id.nav_tools какой-нибудь обработчик нажатия? Это стандартное боковое меню из студии. .setOnMenuItemClickListener переопределяет всю стандартную работу бокового меню. Не могу найти нигде как вернуть работу супер метода. @Override public boolean onNavigationItemSelected вообще не срабатывает...
Спасибо!
Ответы (1 шт):
Автор решения: Дима Филимонов
→ Ссылка
MenuItem menuItem = navigationView.getMenu().findItem(R.id.nav_tools);
menuItem.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem menuItem) {
System.out.println("ItemClickListener "+menuItem.toString());
drawer.closeDrawer(GravityCompat.START);
return true;
}
});