为什么在Android中会出现“R不存在”的错误?

14
packages/apps/Myfolder/src/com/android/myfolder/MyFile.java:196: package R does not exist
                  addPreferencesFromResource(R.xml.myfile);
                                              ^
packages/apps/Myfolder/src/com/android/myfolder/MyFile.java:344: package R does not exist
        menu.add(0, MENU_SAVE, 0, R.string.menu_save)
                                   ^
packages/apps/Myfolder/src/com/android/myfolder/MyFile.java:346: package R does not exist
        menu.add(0, MENU_CANCEL, 0, R.string.menu_cancel)
                                     ^
packages/apps/Myfolder/src/com/android/myfolder/MyFile.java:454: package R does not exist
                     errorMsg = mRes.getString(R.string.error_empty);
                                                ^
packages/apps/Myfolder/src/com/android/myfolder/MyFile.java:458: package R does not exist
                     errorMsg = mRes.getString(R.string.error_empty);

在使用Android Studio时,如果按Alt+Enter键输入类名,它会自动导入相关的R类。 - Muhammad Irfan
7个回答

19
在我的情况下,这个错误的发生是因为我在应用程序发布到Google Play之前更改了包名,但我忘记了更新AndroidManifest.xml文件中manifest元素的package属性。一旦package属性与新的包名匹配,错误就消失了。

非常感谢!我也更改了包名,这个静默问题导致了一切的破裂。供参考,我使用的是AS 0.5.1版本。 - alexgophermix
这正是我正在寻找的。 - David Refoua

19

请确保在调用 R 类的 Java 文件中有名为“YOUR PACKAGE NAME”的包。


1
此外: 检查-在AS中打开每个资源文件并查找任何错误。然后运行工具>清理,工具>重新构建项目。希望有所帮助。我的Android Studio版本是0.3.7。 - TomeeNS

12

检查你的资源文件是否有错误或者是否缺少依赖项。其中任何一个会导致 R.java 类未被自动生成代码,从而产生很多像你展示的那样的错误。


3
  1. 尝试使用“清理-》构建”(如果不行,只需重新启动Eclipse,这通常有效!)
  2. 如果您正在导入项目,请确保选择正确的级别。

0
还要确保在 AndroidManifest.xml 文件中的 application 标签内包含当前 Activity。如果 MyFile 是你的 Activity 子类,那么你应该在其中添加类似以下的代码:
<application 
    android:label="@string/app_name" 
    ... >

        <activity android:name=".MyFile"
            android:configChanges="orientation|keyboardHidden"
            android:label="@string/app_name">
            <intent-filter> 
                <action android:name="android.intent.action.VIEW" /> 
            </intent-filter> 
        </activity>
        ..


</application>

尽管实际包含的内容取决于您的活动。有关更多信息,请参见:http://developer.android.com/guide/topics/manifest/manifest-intro.html


0
如果您正在使用 ant 脚本构建项目,您必须运行 aapt。请参见 $SDK_DIR/tools/ant/main_rules.xml 中的“-resource-src”目标。

-4

你可以尝试导入packagename.R;


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接