【问题标题】:Element ITEM is not allowed in MENU菜单中不允许使用元素 ITEM
【发布时间】:2011-03-24 21:21:31
【问题描述】:

我正在尝试制作自定义选项菜单。使用此代码后,我得到:Element item is not allowed here

代码:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_height="fill_parent"
        android:layout_width="fill_parent">
    <item android:id="@+id/morsoid_settings"
          android:icon="@drawable/ic_new_game"
          android:title="@string/new_game" />
    <item android:id="@+id/morsoid_close"
          android:icon="@drawable/ic_help"
          android:title="@string/help" />
</menu>

灵感来自:Android dev guide

【问题讨论】:

    标签: android android-layout android-2.2-froyo android-menu


    【解决方案1】:

    我不知道这是否有区别,但是您是否将菜单放在 res/menu 中而不是 res/layout 中?

    【讨论】:

    • 这是对我有用的答案。当然,在 IntelliJ Idea 11.0.2 中,它一直在我的菜单布局中显示错误。一旦我将它移到 res/menu 下,一切就OK了。 +1
    【解决方案2】:

    尝试省略布局属性。这是文档中的示例:

    <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:id="@+id/new_game"
              android:icon="@drawable/ic_new_game"
              android:title="@string/new_game" />
        <item android:id="@+id/help"
              android:icon="@drawable/ic_help"
              android:title="@string/help" />
    </menu>
    

    编辑 - 还要确保您使用的是指南建议的MenuInflater

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.game_menu, menu);
        return true;
    }
    

    使用LayoutInflater 将导致&lt;menu&gt; 被解释为视图元素,而它实际上是一个菜单资源。

    【讨论】:

    • 我试过了,但显示另一个错误:应定义layout_width(高度相同):(
    • 您可能使用的是布局充气器而不是菜单充气器。
    【解决方案3】:

    不是 100% 确定您是在谈论编译错误,或者在布局文件中显示在您的开发系统中的错误。

    使用Idea IntelliJ (10.5) 将上面显示的示例代码粘贴到menu.xml 文件时出现错误。

    但是在构建项目之后,它就消失了。我仍然看到您在编辑 menu.xml 文件时看到的 layout_width / height 错误,但它不会影响构建或运行时行为。

    【讨论】:

      【解决方案4】:

      这是一个老问题,但自从我在 2019 年经历过这个问题后,我想我会把我的解决方案放在这里:

      &lt;item&gt; 放入&lt;menu&gt; 时,我在Android Studio 中收到警告说“此处不允许元素项”。原来我的问题是在我的 src/main/res/layout 文件夹中,而不是在我的 src/main/res/menu 文件夹中。

      【讨论】:

        猜你喜欢
        • 2012-11-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-08
        相关资源
        最近更新 更多