getItemId与菜单项不匹配

3

我正在尝试创建一个Android菜单,并使用onOptionsItemSelected(MenuItem item)方法来确定选择了哪个菜单项。然而,我的菜单项与实际相差1个。

res/menu/settings.xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menuSettings" android:title="@string/settings" />
<item android:id="@+id/menuVisit" android:title="@string/visitPopup" />
</menu>

我的代码看起来像:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
Log.v(LOG_TAG, "Menu button click!");
Log.v(LOG_TAG, Integer.toString(item.getItemId()));
Log.v(LOG_TAG, Integer.toString(R.id.menuSettings));

switch (item.getItemId()) {
case R.id.menuSettings:
    Log.v(LOG_TAG, "Trying to start Settings activity");
    startActivity(new Intent(this, SettingsActivity.class));
    return true;
case R.id.menuVisit:
    Log.v(LOG_TAG, "Trying to start menuVisit activity");
    return true;
default:
    Log.v(LOG_TAG, "Trying to start nondefined activity");
    return super.onOptionsItemSelected(item);
}

日志结果如下:

logcat输出如下:

Menu button click
2131165200
2131165201
Trying to start nondefined activity

我很困惑自己错在哪里,因为这段代码曾经是有效的。但由于未知原因,它现在无法正常工作。从logcat输出中可以看到,问题在于两个ID号不匹配。它们相差一个。

1个回答

10

执行“Clean”操作并重启应用程序。这将重新生成R文件,该文件显然包含已不同步的旧值。


当答案对您有帮助时,请对其进行评分:即点击“上箭头”和/或接受它,即点击绿色的“检查”。 - Ognyan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接