首次开发android应用程序时如何在java中修复“R.menu.main”?

Posted

技术标签:

【中文标题】首次开发android应用程序时如何在java中修复“R.menu.main”?【英文标题】:How to fix "R.menu.main" in java when first developing an android app? 【发布时间】:2013-06-16 07:14:03 【问题描述】:

所以我下载了 android 应用教程告诉我的所有内容,并且我正在使用 Eclipse,但在R.menu.main 中的main 上不断收到错误消息:

public boolean onCreateOptionsMenu(Menu menu) 
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;

我已经导入了android.R;,但它不起作用;我删除了那行,然后我去了 Project>Clean,但它仍然没有自行修复。这个话题的其他人一直说要从你的包中导入“R 文件”,但我检查了所有的包和类,没有任何东西叫做R。我尝试导入 res 文件夹,但也没有用。 帮忙?

【问题讨论】:

您在res/menu 文件夹中有main.xml 定义吗? 确保您的导入不是 import android.R,而是正确导入您自己生成的文件。 @AlexisC。我有同样的问题,但我从来没有被告知要在res/menu 中创建一个 main.xml 文件,从一开始就遵循 2013 年的 big nerd 牧场指南。它要求我有效地创建一个main.xml,但它在res/layout 中。这个res/menu/main.xml 文件应该包含什么? 【参考方案1】:

您的 res 文件夹中应该有一个 main.xml 文件可以指向。如果你有它并且它仍然无法正常工作,那么它可能是 R 文件的问题。众所周知,这会导致问题。您不需要导入 R,因为它会自动构建。

您的 xml 文件中可能存在错误。这将导致 R 文件无法构建。解决这个问题并重建你的项目,你应该没问题

【讨论】:

【参考方案2】:
public boolean onCreateOptionsMenu(Menu menu) 
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.activity_main, menu);
    return true;

确保在 res\menu 文件夹中有 main.xml 文件

去掉“import android.R;”

【讨论】:

你能解释一下为什么吗? 您也可以毫无问题地从res/menu 文件夹中对其进行充气。或者您假设 OP 将其设置在 layout 文件夹中。 这是我的一段代码,它可以工作。检查一下,如果可行,请撤消否决票【参考方案3】:

代替

import android.R;

使用

import com.example.R;

com.example 是您自己项目的命名空间。

如果你想在你的项目中找到生成的文件,它应该在gen目录下。如果您的项目编译正确,R 文件应该会自动生成并放置在那里。如果没有发生这种情况,则建议使用 Project Clean。

【讨论】:

【参考方案4】:

可能会发生此类错误,因为您的 XML 文件 main.xml 中有错误

确保您的所有资源文件中都没有错误,并且一切都正确无误。当那里出现问题时,源代码中对 res 文件夹的所有引用都将失败。还要确保不要导入 android.R,因为这些是来自 Android SDK 的资源。只需删除该导入,它应该会引用您项目中的资源文件夹。

【讨论】:

【参考方案5】:

您指的是哪个 Android 应用教程?

我假设您在这方面太陌生了,以至于无论您转向哪里,您都会遇到一千个问题。在那个阶段,对我来说,诀窍就是让一些东西,任何东西,工作。在那之后,我会小心翼翼地在第一次成功中继续构建(嗯,它的副本,实际上......我就是那个偏执狂)。

所以...我在这里提供的是快速引导您完成在 Android/Eclipse 环境中创建应用程序的步骤。如果事情开始崩溃,那么您的设置可能不正确。但是,如果您的设置良好,那么您应该在大约十分钟内就有一个正在运行的应用程序。

从中,您会发现您不必担心 *** [this] 帖子中给出的答案中的很多细节(至少在您获得更多经验之前不会)。

(请注意,更详细的内容可以在 here 找到,但我会认真地给你一个“让我们开始吧”的版本)

在 Eclipse 菜单中...

文件 -> 新建 -> Android 应用程序项目

将出现一个“新的 Android 应用程序”对话框窗口

在应用程序名称字段中键入“MyTestApp”,然后简单地接受其他所有内容。 点击下一步。

在第一个对话窗口之后,您将获得另外四个对话窗口。接受它们的所有默认值,然后继续单击下一步,直到进入最后一个对话框。在那里,只需点击完成。

此时,项目正在创建中。根据您的计算机,这可能需要几秒钟。您可以看到 Eclipse 窗口右下角显示的消息的进度。那里什么都看不到...它已创建。

如果您的 Android/Eclipse 设置良好,那么您应该很快会在 Package Explorer 中看到一个“MyTestApp”项目。该项目将打开(您会在层次结构中看到一堆文件夹)。 “activity_main.xml”将在“layout”文件夹下突出显示,所有这些都在MyTestApp项目文件夹下。

单击 MyTestApp 项目文件夹,将其选中。然后,在 Eclipse 菜单中...

项目 -> 构建项目

同样,查看 Eclipse 窗口右下方的状态消息。如果您的计算机速度很快,那么您可能无法及时赶上它们。那里什么都看不到...您的项目已构建。

在 Eclipse 菜单中...

运行 -> 运行

在对话框中选择 Android 应用程序并单击确定。

此时,您可能会或可能不会看到设备对话框。如果这样做,请选择启动新的 Android 虚拟设备(模拟器)。您可能需要转到管理器(有一个按钮)来设置设备。我使用 AVD_for_Nexus_One_by_Google。我知道一个可行。

请注意,模拟器似乎需要很长时间才能启动。耐心点。非常耐心。您应该很快就会看到该应用正在运行。

所以,假设您在模拟器中看到一个正在运行的应用程序...让我们看看您最终不必担心什么...

如果您检查自动生成的 MainActivity.java 文件,在您刚刚创建的项目中,您会看到您关心的代码...

getMenuInflater().inflate(R.menu.main, menu);

... 看起来不错。没有错误提示。

您还会注意到源代码顶部没有“R-type”导入。

注意,如果您深入到“gen”文件夹的底部,在 Package Explorer 中的“MyTestApp”项目文件夹下,会有一个 R.java 文件。这是在构建项目时自动生成的,并且是您的 getMenuInflater 引用的文件。

所有这一切的重点是,您将拥有(如果您的 Android/Eclipse 设置良好)一些工作,为您提供一个开始点来玩其他东西。

祝你好运。我肯定玩得很开心。

【讨论】:

【参考方案6】:

与编码无关。只需使用 Android sdk 管理器安装适当的工具和软件包。如果您想使用 android 4.0 (API 14),请安装所有软件包并在 Tools 下安装软件包。它对我有用。

【讨论】:

【参考方案7】:

因为您使用 R.menu.main,所以您的程序将在 res/menu 文件夹中找到文件 main.xml。因此,您只需在 res/menu 中创建一个新文件 main.xml。 并且不要将 android.R 导入您的班级。

【讨论】:

请详细解释一下。【参考方案8】:

根据您对项目设置的运行方式,通常可能不会自动生成文件夹 res/menu。因此,为了使菜单膨胀,您必须有一个菜单来膨胀。

在 res 中创建一个名为 'menu' 的新目录;然后在所述目录中创建一个名为'main'的xml文件。 menuInflater 将膨胀的正是这个文件。

【讨论】:

菜单文件夹的命名是 afaik 强制性的,而您希望扩展的 xml 文件可能具有您给它的任何名称(menu_main.xml 是另一个常见的名称)【参考方案9】:

我遇到了同样的问题,然后我点击了 Sync Project with Gradle files,它对我有用 您可以在 Tools->Android->Sync Project with Gradle files 中找到该选项

【讨论】:

【参考方案10】:

Android 版本可能没有文件夹 res/menu。如果是这样,请创建 xml 并将其复制到文件夹中以进行故障排除。

【讨论】:

【参考方案11】:

右击“res”文件夹

将其命名为“菜单”

在该目录中创建一个名为 main_menu 的新 xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

<item
    android:id="@+id/edit_item"
    android:title="Edit" />
<item
    android:id="@+id/delete_item"
    android:title="Delete" />

【讨论】:

以上是关于首次开发android应用程序时如何在java中修复“R.menu.main”?的主要内容,如果未能解决你的问题,请参考以下文章

VS2017 Xamarin开发Android时首次部署完成后直接闪退

如何在首次运行时填充 Android Room 数据库表?

[Android NDK/JNI-1A]-开发环境搭建

HTML5 - 在 Android WebView 中首次加载时未呈现画布

首次加载android后如何禁用谷歌地图当前位置跟踪

环境配置配置ndk