【问题标题】:Android Resources$NotFoundException: Resource ID #0x7f030027Android 资源 $NotFoundException:资源 ID #0x7f030027
【发布时间】:2014-02-11 17:14:28
【问题描述】:

我正在开发我的 android 程序,当我尝试对其进行测试时,我突然开始收到错误消息“android.content.res.Resources$NotFoundException: Resource ID #0x7f030027” 我所做的最后一项重大更改是在通过支持库的操作栏,但我已经可以正常工作了。除此之外,我添加了一个新类,但即使我删除了该类及其关联文件,错误仍然会弹出。我已经尝试清理项目并多次重新启动 Eclipse 无济于事。

这是堆栈跟踪,以防翻译中丢失任何内容:

01-21 19:05:53.125: E/AndroidRuntime(18599): FATAL EXCEPTION: main
01-21 19:05:53.125: E/AndroidRuntime(18599): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.blackhat.htmlparsingtest/com.blackhat.htmlparsingtest.MainActivity}: android.content.res.Resources$NotFoundException: Resource ID #0x7f030027
01-21 19:05:53.125: E/AndroidRuntime(18599):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2110)
01-21 19:05:53.125: E/AndroidRuntime(18599):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135)
01-21 19:05:53.125: E/AndroidRuntime(18599):    at android.app.ActivityThread.access$700(ActivityThread.java:143)
01-21 19:05:53.125: E/AndroidRuntime(18599):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1241)
01-21 19:05:53.125: E/AndroidRuntime(18599):    at android.os.Handler.dispatchMessage(Handler.java:99)
01-21 19:05:53.125: E/AndroidRuntime(18599):    at android.os.Looper.loop(Looper.java:137)
01-21 19:05:53.125: E/AndroidRuntime(18599):    at android.app.ActivityThread.main(ActivityThread.java:4950)
01-21 19:05:53.125: E/AndroidRuntime(18599):    at java.lang.reflect.Method.invokeNative(Native Method)
01-21 19:05:53.125: E/AndroidRuntime(18599):    at java.lang.reflect.Method.invoke(Method.java:511)
01-21 19:05:53.125: E/AndroidRuntime(18599):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1004)
01-21 19:05:53.125: E/AndroidRuntime(18599):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:771)
01-21 19:05:53.125: E/AndroidRuntime(18599):    at dalvik.system.NativeStart.main(Native Method)
01-21 19:05:53.125: E/AndroidRuntime(18599): Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f030027
01-21 19:05:53.125: E/AndroidRuntime(18599):    at android.content.res.Resources.getValue(Resources.java:1026)
01-21 19:05:53.125: E/AndroidRuntime(18599):    at android.content.res.Resources.loadXmlResourceParser(Resources.java:2131)
01-21 19:05:53.125: E/AndroidRuntime(18599):    at android.content.res.Resources.getLayout(Resources.java:865)
01-21 19:05:53.125: E/AndroidRuntime(18599):    at android.view.LayoutInflater.inflate(LayoutInflater.java:394)
01-21 19:05:53.125: E/AndroidRuntime(18599):    at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
01-21 19:05:53.125: E/AndroidRuntime(18599):    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:309)
01-21 19:05:53.125: E/AndroidRuntime(18599):    at android.app.Activity.setContentView(Activity.java:1914)
01-21 19:05:53.125: E/AndroidRuntime(18599):    at android.support.v7.app.ActionBarActivity.superSetContentView(ActionBarActivity.java:216)
01-21 19:05:53.125: E/AndroidRuntime(18599):    at android.support.v7.app.ActionBarActivityDelegateICS.setContentView(ActionBarActivityDelegateICS.java:111)
01-21 19:05:53.125: E/AndroidRuntime(18599):    at android.support.v7.app.ActionBarActivity.setContentView(ActionBarActivity.java:76)
01-21 19:05:53.125: E/AndroidRuntime(18599):    at com.blackhat.htmlparsingtest.MainActivity.onCreate(MainActivity.java:39)
01-21 19:05:53.125: E/AndroidRuntime(18599):    at android.app.Activity.performCreate(Activity.java:5179)
01-21 19:05:53.125: E/AndroidRuntime(18599):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
01-21 19:05:53.125: E/AndroidRuntime(18599):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2074)
01-21 19:05:53.125: E/AndroidRuntime(18599):    ... 11 more

我还检查了 R.java 文件并且资源确实存在,尽管正如我提到的清理项目,删除 R 文件并重新启动 Eclipse 什么都不做。然而,我觉得应该提到的一件事是我找到了两个 R.java 文件,一个在我的项目文件夹中以及 BuildConfig.Java。另一个在 android.support.v7.appcompat 中。我知道 appcompat 可能会导致一些问题,所以我认为值得一提以防万一。

我什至无法让我的代码像以前那样工作,因此我们将不胜感激,如果您需要任何其他信息,请告诉我!

【问题讨论】:

  • 我会说干净的项目,但鉴于您已经这样做了,我们需要一些代码来帮助您。
  • 如果您的导入中有 android.R,请将其删除并重试,但除此之外,正如 @Clay 所说,我们需要更多信息。
  • 好的,具体是什么代码?我假设您需要来自我的 MainActivity 的代码,也许还有堆栈跟踪?
  • 你可以试试这个问题的ans中提供的替代方案。

标签: android android-resources


【解决方案1】:

您可以检查您的 R 文件中的 Resources$NotFoundException: Resource ID #0x7f030027。它会告诉您是哪个资源造成了问题。作为替代解决方案,我认为您可能拥有setText 或任何内容只是int。正如您所知道的,编译器将寻找相应的资源值。因此,只需将一个空字符串连接为""

【讨论】:

  • 这确实有帮助!事实证明,不知何故,xml文件从布局文件夹中被删除了......感谢您的帮助!
  • @delive a soln 在您的情况下不起作用,并不意味着这是错误的。您首先需要了解您应该选择哪种解决方案。
  • You might have set text or any content just an int 是的......那是我做的错误......谢谢@Manmohan
  • “你可能已经设置了文本或任何内容只是一个 int”,是的,它发生在我身上,一旦我输入“String.valueOf(myInteger)”,一切就OK了。谢谢。
  • 这帮助我找到了“有问题的”资源,但它是在 mdpi、hdpi、xhdpi 和 xxhdpi 中定义的。我认为 Android App Bundle 或用户在 Google Play 商店之外下载我的应用程序可能存在一些问题。我真的不确定是什么导致了这个问题。
【解决方案2】:

我遇到了这个异常:

android.content.res.Resources$NotFoundException:资源 ID #0x7f02004f

我打电话给PNG Icon ...\app\src\main\res\drawable-21

当我将PNG Icon 放入 ...\app\src\main\res\drawable 我称之为,
我的问题消失了

顺便说一句,XML 工作于 \drawable-21

【讨论】:

    【解决方案3】:

    我也有同样的问题:

    当我试图将一些文件移动到 IDE 中的另一个目录时,不知何故我将布局 xml 文件从 layout 目录移动到 layout-land 目录。

    我把它移回去后它工作了。

    希望这对某人有所帮助。

    【讨论】:

    • 这个答案救了我!起初我不明白答案是什么意思,所以对于任何需要说明的人:查看->工具窗口->项目然后检查布局在哪个文件夹。
    【解决方案4】:

    我尝试将图像文件 (png,jpg)drawable-v24 移动到 drawable

    解决了问题

    【讨论】:

    • 我有同样的问题,这个答案有效,奇怪的是 android studio 无法检测到 drawable-v24 中存储的文件。将文件移动到可绘制文件夹工作
    • 可能与模拟器屏幕密度有关
    【解决方案5】:

    在我的情况下,更新到 Android Studio build: 3.0 Canary 6 后发生错误,我将其降级到以前的版本 3.0 Canary-5 并构建工具 canary-5 后进行了修复。

    此问题与 api 19 及以下版本的矢量绘图不兼容有关

    编辑: 看起来上述问题已在 Android Studio build: 3.0 Canary 7

    上得到解决

    【讨论】:

    • 如何降级我的 android studio?
    【解决方案6】:

    对我来说,在创建布局文件时,它位于layout-land 文件夹中,因此例外。 希望它会对某人有所帮助。

    【讨论】:

    • 这就是我的问题所在。谢谢:)
    • 就是这样。在项目之间粘贴布局时,Android Studio 有时会变得疯狂。
    【解决方案7】:

    我刚刚遇到了同样的问题——清理和重建项目为我解决了这个问题!

    【讨论】:

    • 我重新启动了 Visual Studio,删除了 bin 和 obj 文件夹。清理并重建项目,最终问题得到解决。谢谢。
    【解决方案8】:

    a) 您的任何资源 xml 文件(字符串、布局、动画等)中可能存在错误,并且 your.package.name.R 无法编译该错误

    前:

    <string name="main_header">My problem wasn't in java it was in this string</string>
    

    错误:撇号'前面需要加反斜杠\

    更正:

    <string name="main_header">My problem wasn\'t in java it was in this string</string>
    

    或者,

    b) 你在课堂上输入了错误的“R”。确保导入 your.package.name.R 而不是 android.R

    前:

    //You DO NOT want this, unless you are working directly with android's 
      resources, not your own in your project
    import android.R
    

    更正:

    // You want to reference your project's resources, not Android OS's
    import your_package_name_here.R
    

    希望这会有所帮助,快乐编码!

    【讨论】:

    • 既然你提到了,在创建新类时,我最初没有修改strings.xml,也没有创建菜单或布局(因为我计划使用不同的菜单和布局文件。可以这导致情况A?
    • 不,这不应该影响它,如果确实如此,我相信它不会出错。请参阅我的更新答案。希望对你有帮助
    • 在您编辑后检查了我的代码,我注意到 R 根本没有导入。我也不记得曾经导入过它,尽管我可能是错的。我不知道这是否会有所不同,但如果是这样,那么我不知道如何在我没有直接编辑它们的情况下从我的所有课程中删除导入。感谢您的回复!
    • 如果您没有导入 R(没有 setContentView(R.layout.my_layout)),那么我相信您的错误在于某处的 xml。我可能错了,但这就是我能想到的。运行android lint,它可能会帮助你
    【解决方案9】:

    我在 Android 4.2.2 上遇到此错误,但在 Android 5 和 Android 6 上没有。 原因是我在 drawable-v21 文件夹中放置了一些矢量图标(导航抽屉的 xml 文件),因为默认情况下 android 生成了导航抽屉图标,例如ic_menu_gallery.xml 位于 drawable-v21 文件夹中。将这些 xml 文件(我生成而不是默认文件)移动到可绘制文件夹解决了我的问题。不要将默认生成的图标移动到drawable,否则可能会导致重复异常。

    【讨论】:

      【解决方案10】:

      您可以使用

      从项目资源中调用字符串

      Resources().getSystem().getString( R.string.my_string_id)

      指的是全局资源。要直接从您的活动中引用您的项目资源,请执行 getString():

      this.getString(
        R.string.my_string_id); // From within your activity class.
      
      myActivity.getString(
        R.string.my_string_id); // From other classes as instance reference.
      

      【讨论】:

        【解决方案11】:

        第一步: ctrl + maj + f : 在这里查找问题代码 = #0x7f030027

        第二步 读取值的名称,找到它的使用位置。

        第三步 如果它是 PNG,那么您可能没有放置所有不同尺寸的它。

        【讨论】:

          【解决方案12】:

          将drawable-v24中的图片图标替换为drawable,解决了我的问题

          【讨论】:

            【解决方案13】:

            看看这个链接,也许它会帮助你,它是同样的问题。如果清理项目不能帮助您尝试删除 r.java 文件,它将自行生成。 Getting android.content.res.Resources$NotFoundException: exception even when the resource is present in android

            【讨论】:

            • 不,我尝试按照建议删除 R.Java,但仍然遇到同样的错误。
            • 我只在 Galaxy S5 上收到此错误,而不是在摩托罗拉手机上。这是为什么呢?
            • @The_Martian 这很可能是因为您的问题是由于手机密度不同造成的。检查您引用的任何文件是否在两个设备的所有茎中,因为它可能无法在设备上找到文件。
            【解决方案14】:

            如果您在 API 版本 19 或更低版本中使用具有 &lt;layer-list&gt; 的 resource.xml 中的矢量可绘制对象,您将收到此异常

            【讨论】:

              【解决方案15】:

              在我的例子中,我在滚动视图中为垂直滚动条使用了自定义样式,如下所示:

               <ScrollView
                      android:id="@+id/scroller"
                      style="@style/scrollbar_shape_style"
                ..>
              

              我的风格是这样的:

               <style name="scrollbar_shape_style">
                ...
              

              我把第一部分改成了这样:

              <ScrollView
                  android:id="@+id/scroller"
                  android:theme="@style/scrollbar_shape_style"
              

              并像这样将父级添加到样式中:

              <style name="scrollbar_shape_style" parent="LightTheme">
              

              问题解决了。

              【讨论】:

                【解决方案16】:

                我在第一次使用 BottomNavigationDrawer 小部件时遇到了 ResourceException 问题。 Tyr 为所有可能的维度添加所有资源,最后,我通过删除所有 drawable-v21 和 drawable-v24 文件夹来解决这个问题,只留下传统的 drawable 文件夹。

                【讨论】:

                  【解决方案17】:

                  使用自定义 UI 库时遇到此问题,因此 app:srcCompt 不可用。我使用的是最新的 gradle build(v3.4.1),降级到 v3.2.1 后问题得到了解决。

                  【讨论】:

                    【解决方案18】:

                    在我的例子中,我为TextView.setText() 设置了一个整数值。因为它是一个 int,所以它假设它是一个资源 id,当然不是这样。

                    year = 1947;
                    textView.setText(year) ------>>>> Error!
                    

                    通过将整数值转换为字符串来修复它-

                    textView.setText(year + "");
                    
                    or
                    
                    textView.setText(String.valueOf(year));
                    

                    【讨论】:

                      【解决方案19】:

                      您可能正在从当前设备开发更新的 android 版本。 尝试下载适合您的测试设备的 SDK。

                      【讨论】:

                        【解决方案20】:

                        您可能两次使用相同的资源照片。
                        两次使用照片时发生这种情况:
                        第一次在主屏幕中然后使用同一张照片在另一个活动中。

                        【讨论】:

                          猜你喜欢
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 2018-06-18
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          相关资源
                          最近更新 更多