【问题标题】:Android Resources$NotFoundException when inflating activity from library project从库项目中膨胀活动时的 Android Resources$NotFoundException
【发布时间】:2016-08-11 23:58:44
【问题描述】:

当我将 MuPDF 库添加到我的项目时可能会导致此问题。

这是错误日志:

FATAL EXCEPTION: main
        Process: ch.my.app, PID: 18899
        java.lang.RuntimeException: Unable to start activity ComponentInfo{ch.my.app/com.artifex.mupdflib.MuPDFActivity}: android.content.res.Resources$NotFoundException: File  from drawable resource ID #0x7f0d000f: .xml extension required
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3119)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3218)
            at android.app.ActivityThread.access$1000(ActivityThread.java:198)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1676)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:145)
            at android.app.ActivityThread.main(ActivityThread.java:6837)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)
         Caused by: android.content.res.Resources$NotFoundException: File  from drawable resource ID #0x7f0d000f: .xml extension required
            at android.content.res.Resources.twLoadColorStateList(Resources.java:4013)
            at android.content.res.Resources.loadColorStateList(Resources.java:3943)
            at android.content.res.Resources.getColor(Resources.java:2072)
            at com.artifex.mupdflib.MuPDFActivity.onCreate(MuPDFActivity.java:295)
            at android.app.Activity.performCreate(Activity.java:6500)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1120)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3072)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3218) 
            at android.app.ActivityThread.access$1000(ActivityThread.java:198) 
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1676) 
            at android.os.Handler.dispatchMessage(Handler.java:102) 
            at android.os.Looper.loop(Looper.java:145) 
            at android.app.ActivityThread.main(ActivityThread.java:6837) 
            at java.lang.reflect.Method.invoke(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:372) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199) 

我将 MuPDF 库添加为模块,这是 settings.gradle

include ':app'
include ':library_MuPDF'

模块 app 的 build.gradle 包含:

apply plugin: 'com.android.library'

android {
compileSdkVersion 23
buildToolsVersion "23.0.2"

defaultConfig {
    minSdkVersion 8
    targetSdkVersion 23
}

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
    }
}
}

dependencies {
    compile 'com.android.support:support-v4:22.2.1'
}

还有项目gradle:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.0.0'
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

Android Studio 没有显示任何问题。 这是崩溃的代码:

getWindow().setStatusBarColor(getResources().getColor(R.color.actionbar_background_dark));

当我禁用它时,问题出在充气时:

mButtonsView = getLayoutInflater().inflate(R.layout.buttons, null);

这是膨胀错误:

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: ch.app.app, PID: 3283
    java.lang.RuntimeException: Unable to start activity ComponentInfo{ch.app.app/com.artifex.mupdflib.MuPDFActivity}: android.view.InflateException: Binary XML file line #14: Binary XML file line #14: Error inflating class <unknown>
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2484)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2544)
        at android.app.ActivityThread.access$900(ActivityThread.java:150)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1394)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:168)
        at android.app.ActivityThread.main(ActivityThread.java:5845)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:687)
     Caused by: android.view.InflateException: Binary XML file line #14: Binary XML file line #14: Error inflating class <unknown>
        at android.view.LayoutInflater.inflate(LayoutInflater.java:539)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
        at com.artifex.mupdflib.MuPDFActivity.makeButtonsView(MuPDFActivity.java:1091)
        at com.artifex.mupdflib.MuPDFActivity.createUI(MuPDFActivity.java:587)
        at com.artifex.mupdflib.MuPDFActivity.onCreate(MuPDFActivity.java:473)
        at android.app.Activity.performCreate(Activity.java:6248)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1125)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2437)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2544) 
        at android.app.ActivityThread.access$900(ActivityThread.java:150) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1394) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:168) 
        at android.app.ActivityThread.main(ActivityThread.java:5845) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:687) 

我检查的一切看起来都正确,我清理了项目,干净安装了应用程序,删除了使用这个库的所有其他应用程序,这个问题仍然存在。

我可以在哪里寻找其他可能的问题?

谢谢

【问题讨论】:

  • 你认为.xml extension required这行有什么意义吗?
  • 当我回复下面的答案时,库本身在示例项目 (github.com/joniks/Android-MuPDF) 中运行良好。所以 xml 扩展名就在它应有的位置上。即使是 Android Studio 在查找方面也没有任何问题(cmd-click 正在将我转移到具有正确颜色列表的正确 XML 文件)。问题不在于代码的正确性,抱歉,我应该提到这一点。或者,如果您的意思不同,请告诉我。
  • 堆栈跟踪中有一行写着Caused by: android.content.res.Resources$NotFoundException: File from drawable resource ID #0x7f0d000f: .xml extension required
  • 是的,我明白了。那是一些问题的结果。但我不知道是什么原因造成的,因为可绘制对象还可以,以及第二个示例,其中充气机在布局完全正常的情况下存在布局问题(因为它与正在工作的示例相同,模块是从工作库导入)。我真的不知道你想建议什么。
  • 你有res/values/colorsres/values/colors.xml吗?该错误似乎表明您的文件之一没有 XML 扩展名

标签: android android-studio mupdf


【解决方案1】:

确保您的库项目在 res/values 文件夹中有 color.xml 文件

【讨论】:

  • 该库来自此来源github.com/joniks/Android-MuPDF,并且有使用该库的示例项目。因此,我坚信这不是问题的核心(因为具有完全相同的库和相同代码的示例项目完全可以正常工作)。必须有一些错误的设置或标志,库本身的代码正在运行。我只是不知道在哪里寻找它。
  • 为什么用context.getResources() 替换getResources() 会改变什么?一个 Activity 已经是一个 Context,所以抓取一些 Context 对象是没有意义的。
  • 对不起,我同时看两个问题,我错了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-19
  • 2013-07-04
  • 2017-07-12
  • 2018-05-12
  • 2016-10-30
  • 2021-02-17
  • 1970-01-01
相关资源
最近更新 更多