添加导航抽屉时,ToolBar上的图标无响应

时间:2016-01-03 14:33:25

标签: android

我在我的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);
    }
}

我的工具栏上弹出图标,但点击它时没有响应。请帮忙。谢谢。

3 个答案:

答案 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()

的情况下,它必须是项目的ID,而不是标题的ID
@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);
    } 
}