【问题标题】:Android - Resources$NotFoundExceptionAndroid - 资源$NotFoundException
【发布时间】:2012-10-27 18:40:34
【问题描述】:

我有一个拥有超过 100.000 个用户的应用程序。但在某些设备(~50)上,我遇到了一个奇怪的异常。堆栈跟踪显示,未找到可绘制对象。
这是堆栈跟踪:

java.lang.RuntimeException: Unable to start activity ComponentInfo{mindmApp.the.big.bang.theory.quiz/mindmApp.the.big.bang.theory.quiz.GameNormalActivity}: android.view.InflateException: Binary XML file line #237: Error inflating class 
...
Caused by: android.view.InflateException: Binary XML file line #237: Error inflating class 
at android.view.LayoutInflater.createView(LayoutInflater.java:606)
at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
at android.view.LayoutInflater.onCreateView(LayoutInflater.java:653)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:678)
...
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
at android.view.LayoutInflater.createView(LayoutInflater.java:586)
... 28 more
Caused by: android.content.res.Resources$NotFoundException: File res/drawable/textviewxml_joker.xml from drawable resource ID #0x7f02003d
at android.content.res.Resources.loadDrawable(Resources.java:1956)
at android.content.res.TypedArray.getDrawable(TypedArray.java:601)
at android.view.View.(View.java:2841)
at android.widget.TextView.(TextView.java:580)
at android.widget.TextView.(TextView.java:573)

我不知道为什么找不到这个可绘制对象(它是一个 xml 文件)。
二进制 XML 文件第 237 行是:

<TextView
                    android:id="@+id/textViewSkip"
                    android:layout_width="0px"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="4dp"
                    android:layout_weight="1"
                    android:background="@drawable/textviewxml_joker"
                    android:gravity="center"
                    android:text="@string/tvSkip"
                    android:textAppearance="?android:attr/textAppearanceMedium"
                    android:textColor="@color/color_textview"
                    android:textSize="22sp" />

这里是 textviewxml_joker.xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:drawable="@drawable/textview_joker_pressed"
    android:state_pressed="true"/>
<item android:drawable="@drawable/textview_joker"/>
</selector>

有人想解决这个问题吗?

最好的问候!

【问题讨论】:

  • textviewxml_joker.xml 文件是否存在于drawable 文件夹中?
  • 是的,textviewxml_joker.xml文件就是drawable文件夹。
  • 嗨@Namenlos,我面临着类似的问题..这有什么运气吗?请分享。
  • 不抱歉,我还没有找到解决方案。

标签: android xml textview drawable filenotfoundexception


【解决方案1】:

如果您的textviewxml_joker.xml 文件不在drawable 中,而是在drawable-* 文件夹中,那么出现错误的少数设备可能不符合使用drawable-* 文件夹的条件。

将它也放入drawable,它应该可以修复它。

【讨论】:

  • 不,textviewxml_joker.xml文件在普通的drawable文件夹中。
【解决方案2】:

如果您引用的资源(我们称之为 ResA)反过来又引用了丢失的资源(我们称之为 ResB),也可能发生这种情况。 即使真正缺少的是 ResB,Android 也会为 ResA 引发 ResourceNotFoundException。这就是生活!

在我的例子中,ResB 是在 values-swxxxdp 中定义的,但不是在 values 中定义的。因此,我在手机上遇到了这个异常,但在平板电脑上却没有。

【讨论】:

    【解决方案3】:

    如果您有多个资源文件夹,请确保 Android 为每个可能的限定符组合 (Providing Resources) 找到您的可绘制 xml。查看有此错误的设备类型可能会提示您在哪里查看。

    【讨论】:

    • 文件在普通的drawbable文件夹中。所有设备都必须在那里找到它吗?
    猜你喜欢
    • 1970-01-01
    • 2014-02-11
    • 1970-01-01
    • 1970-01-01
    • 2017-03-21
    • 2014-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多