首次开发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时首次部署完成后直接闪退