Android 无法识别我的 ID

Android doesn't recognize my id

我正在开发一个带有菜单的应用程序。 菜单包含 2 个项目,一个地图和一个设置 属性 这是菜单语法:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity">
    <item android:id="@+id/action_settings"
        android:title="@string/action_settings"
        android:orderInCategory="100"
        app:showAsAction="never" />
    <item android:id="+@id/action_maps"
        android:title="@string/action_map"
        app:showAsAction="never"/>
</menu>

我使用 MainActivity 中的 onOptionsItemSelected(MenuItem item) 方法来处理这个问题:

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            Intent intent = new Intent(this, PreferenceActivity.class);
            startActivity(intent);
            return true;
        }

        if(id == R.id.action_maps){
            openPreferredLocationMap();
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

现在的问题是Android在方法中识别了action_settings但是他不识别action_maps。为什么?

这是错误的

<item android:id="+@id/action_maps"
    android:title="@string/action_map"
    app:showAsAction="never"/>

试试这个

<item android:id="@+id/action_maps"
    android:title="@string/action_map"
    app:showAsAction="never"/>

问题是 + 符号应该在 @ 之后而不是在

之前

您不小心在菜单的 action_map 项中切换了“+”和“@”

我删除了 android:orderInCategory="100" 并且 Id 再次被识别