我正在尝试访问setOnMenuItemClickedListener,但得到的是空对象引用。错误消息不是很具体,并且不会告诉我哪个对象导致了空引用。我已经使用findViewById明确定义了MenuItem对象。菜单项本身位于“ android.support.v4.widget.DrawerLayout”中,它是主要活动的根。
MenuItem item1 = findViewById(R.id.restore);
item1.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
return false;
}
});
上面的所有代码都在mainactivites oncreate bundle函数中。
最佳答案
响应抽屉菜单项单击的正确方法是在活动中实现NavigationView.OnNavigationItemSelectedListener
界面。
然后,将抽屉配置为在onCreate()方法中使用以下代码将活动用于回调NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); navigationView.setNavigationItemSelectedListener(this);
然后您可以对添加到活动中的onNavigationItemSelected方法中单击的菜单项进行响应。方法示例如下:
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
// Handle navigation view item clicks here.
switch (item.getItemId()) {
case R.id.restore: {
//do somthing
break;
}
}
//close navigation drawer
mDrawerLayout.closeDrawer(GravityCompat.START);
return true;
}