我在我的Activity中添加了一个导航抽屉,它似乎工作正常。问题是我的工具栏上有另一个名为info的图标,现在没有响应。此信息项存在于我的menu.xml文件中:
<item
android:id="@+id/info"
android:title="Info"
android:icon="@drawable/ic_info_outline_black_24dp"
android:orderInCategory="100"
app:showAsAction="always" />
我在我的Java代码中夸大了这个菜单:
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.action_bar_items, menu);
return true;
}
并将其添加到我的onOptionsItemsSelectedMethod,它还包含我的导航抽屉:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.home:{
if (drawerLayout.isDrawerOpen(drawerList)){
drawerLayout.closeDrawer(drawerList);
}else{
drawerLayout.openDrawer(drawerList);
}
return true;
}case R.id.info:{
Toast.makeText(getApplicationContext(),"HEY",Toast.LENGTH_LONG).show();
}
default:return super.onOptionsItemSelected(item);
}
}
我的工具栏上弹出图标,但点击它时没有响应。请帮忙。谢谢。
答案 0 :(得分:2)
ID需要保持一致
在 xml 中你有:
android:id="@+id/infoActionBar"
在 java 代码中,您正在寻找:
case R.id.info:
更改其中任何一个,以匹配另一个。
修改强>
将case R.id.home:
替换为case android.R.id.home:
答案 1 :(得分:0)
xml中的信息按钮ID为android:id="@+id/infoActionBar"
,您尝试拨打case R.id.info:
,因此请更改其中一个,然后重试:)
infoActionBar
vs info
答案 2 :(得分:0)
在onOptionsItemSelected
item.getItemId()
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.home:{
if (drawerLayout.isDrawerOpen(drawerList)){
drawerLayout.closeDrawer(drawerList);
}else{
drawerLayout.openDrawer(drawerList);
}
return true;
}case R.id.infoActionBar:{
Toast.makeText(getApplicationContext(),"HEY",Toast.LENGTH_LONG).show();
}
default:return super.onOptionsItemSelected(item);
}
}