Android:处理主菜单项

时间:2014-06-19 23:40:40

标签: android

上下文:非常熟悉iOS开发和Java。 Android新手。

问题:我添加了一个处理程序来导航'返回'按下主页按钮时。它工作正常,直到我在用户扫描按钮时添加另一个处理程序:

@Override
public boolean onOptionsItemSelected(MenuItem item)
{
    if (item.getItemId() == R.id.home) //The ID here is no longer R.id.home
    {
        navigateBack();
        return true;
    }
    else if (item.getItemId() == R.id.scan_button)
    {
        presentScanner();
        return true;
    }
    return super.onOptionsItemSelected(item);
}

只要我为扫描添加代码,id就不再是R.id.home。如果我这样做,它可以工作:

    if (item.getItemId() == 16908332)
    { . . etc. . . 

发生了什么事?如何在当前活动中正确获取主页按钮的ID?

更新:已从R.id.home更改为' android.R.id.home'这很有效。为什么?

1 个答案:

答案 0 :(得分:1)

作为@Romain Guy之前,Android背后的男人无法完成see here。但对于较旧的设备,您可能需要尝试keyevent method.。这post探索了实现您所寻找目标的其他方法。

<强>更新 在操作栏中使用android.R.id.home来知道你的actionappIcon被按下了(左侧)。而R.id.home是对物理主页按钮的引用(或触摸为nexus 5)。请查看此tutorial以获取进一步说明和用例。