【问题标题】:Android Developers MyFirstApp - "menu cannot be resolved or is not a field"Android Developers MyFirstApp - “菜单无法解析或不是字段”
【发布时间】:2012-08-16 14:20:59
【问题描述】:

我正在尝试在 Eclipse 中使用 tutorial provided by android 构建我的第一个应用程序。

我已经完成了所有操作,但我收到错误消息...“菜单无法解析或不是字段”。该教程没有提到任何关于菜单的内容,我确信我没有对它做任何事情。它抱怨的那一行我已经在评论中标记了。

package com.example.my.first.app;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class MainActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_main, menu);        <!--this line-->
    return true;
}
}

这是教程要求我编辑的主要活动页面,如下所示...

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<EditText android:id="@+id/edit_message"
    android:layout_weight="1"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:hint="@string/edit_message" />
<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/button_send" />
</LinearLayout>

放弃我在其他问题上找到的建议,我尝试点击它并包括它所要求的内容,即“在类型'R'中创建字段'菜单'或“在类型中创建常量'菜单' 'R'。我已经分别完成了这两项操作,每次我保存项目以便重建时,它都会自动删除包含的行。

对于该领域,这已经完成。 - 公共静态对象菜单; 对于常数,这是完成的。 - public static final String menu = null;

所以我现在有点卡住了,希望得到一些急需的帮助。

【问题讨论】:

    标签: android eclipse


    【解决方案1】:

    onCreateOptionsMenu 方法指的是一个必须在 /res/menu 文件夹中并以 XML 实现的菜单。看起来像这样:

    <menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/menu_settings"
        android:title="@string/menu_settings"
        android:orderInCategory="100" />
    </menu>
    

    您可以复制/粘贴此代码,将其保存为 /res/menu 文件夹中的 activity_main.xml(如果没有,则创建一个)或删除整个方法

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);        <!--this line-->
        return true;
    }
    

    它的作用是在您点击设备上的菜单按钮时打开一个菜单,如果您删除该方法,您将不会有这样的菜单。如果需要,您仍然可以创建一个。

    【讨论】:

    • 我已经有你提到的代码在你提到的地方... /My First App/res/layout/menu/activity_main.xml schemas.android.com/apk/res/android ">
    • 抱歉格式错误,我不确定如何将代码放入这些 cmets。
    • 我的第一个应用程序/res/layout/menu/activity_main.xml 那是布局的文件夹。您必须在 My First App/res/menu/activity_main.xml 中有一个 activity_main.xml。如果你有我在布局文件夹中发布的代码,那就有问题了。
    • 如果我开始输入出现错误的行.....getMenuInflater().inflate(menuRes, menu)。输入属性 menuRes 时,我起身为“R”。但没有显示菜单。其他选项可用,如布局、字符串、样式,但没有菜单。
    • 我已将菜单文件夹移出布局并直接位于 res 下,一切似乎都在构建没有任何错误。谢谢。
    【解决方案2】:

    检查并查看您是否正在导入 android.R。如果是这样,请删除该行。

    【讨论】:

      【解决方案3】:

      确保将 menu.xml 文件放在 res/menu/ 目录中。

      【讨论】:

      • 这应该是 Ascorbin 建议的 menu.xml 还是 activity_main.xml?我已经有一个activity_main.xml。
      • 不,当然是activity_main.xml。我只是举个例子。然后我看不出你的代码有什么问题。它应该可以正常工作。
      • 感谢您帮助我。
      【解决方案4】:

      Using Eclipse IDE--->Package Explore in Eclipse > res > menu > main.xml 或 main_activity_actions 文件...检查其名称.. 并放入语句 inflater.inflate(R.menu.main, menu);您在 inflater 语句中使用的名称无法解析,或者是您的应用程序中的字段。所以首先确认它,然后在菜单目录中确认正确的文件名,然后在您的语句中使用它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-04
        • 1970-01-01
        • 2022-01-09
        • 1970-01-01
        • 2011-06-11
        • 1970-01-01
        相关资源
        最近更新 更多