上下文:非常熟悉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'这很有效。为什么?
答案 0 :(得分:1)
作为@Romain Guy之前,Android背后的男人无法完成see here。但对于较旧的设备,您可能需要尝试keyevent method.。这post探索了实现您所寻找目标的其他方法。
<强>更新强> 在操作栏中使用android.R.id.home来知道你的actionappIcon被按下了(左侧)。而R.id.home是对物理主页按钮的引用(或触摸为nexus 5)。请查看此tutorial以获取进一步说明和用例。