Android 自定义按钮状态选择器 XML 文件导致 Resource$NotFoundException

2023-12-08

由于 Resource$NotFoundException,我的活动随机崩溃,并且总是由于我的自定义按钮的状态选择器文件之一而导致。而且崩溃是完全随机的,我将多次检查整个应用程序而不会发生崩溃,然后第 n 次转到 Activity,然后它会抛出异常。

堆栈跟踪:

07-12 11:12:18.469  2086  2086 D AndroidRuntime: Shutting down VM
07-12 11:12:18.469  2086  2086 W dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x400208b0)
07-12 11:12:18.508  2086  2086 E AndroidRuntime: FATAL EXCEPTION: main
07-12 11:12:18.508  2086  2086 E AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.appname.droid/com.appname.droid.send.ConfirmActivity}: android.view.InflateException: Binary XML file line #123: Error inflating class <unknown>
07-12 11:12:18.508  2086  2086 E AndroidRuntime:        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2737)
07-12 11:12:18.508  2086  2086 E AndroidRuntime:        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2753)
07-12 11:12:18.508  2086  2086 E AndroidRuntime:        at android.app.ActivityThread.access$2500(ActivityThread.java:129)
07-12 11:12:18.508  2086  2086 E AndroidRuntime:        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2107)
07-12 11:12:18.508  2086  2086 E AndroidRuntime:        at android.os.Handler.dispatchMessage(Handler.java:99)
07-12 11:12:18.508  2086  2086 E AndroidRuntime:        at android.os.Looper.loop(Looper.java:143)
07-12 11:12:18.508  2086  2086 E AndroidRuntime:        at android.app.ActivityThread.main(ActivityThread.java:4701)
07-12 11:12:18.508  2086  2086 E AndroidRuntime:        at java.lang.reflect.Method.invokeNative(Native Method)
07-12 11:12:18.508  2086  2086 E AndroidRuntime:        at java.lang.reflect.Method.invoke(Method.java:521)
07-12 11:12:18.508  2086  2086 E AndroidRuntime:        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
07-12 11:12:18.508  2086  2086 E AndroidRuntime:        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
07-12 11:12:18.508  2086  2086 E AndroidRuntime:        at dalvik.system.NativeStart.main(Native Method)
07-12 11:12:18.508  2086  2086 E AndroidRuntime: Caused by: android.view.InflateException: Binary XML file line #123: Error inflating class <unknown>
07-12 11:12:18.508  2086  2086 E AndroidRuntime:        at android.view.LayoutInflater.createView(LayoutInflater.java:513)
07-12 11:12:18.508  2086  2086 E AndroidRuntime:        at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
07-12 11:12:18.508  2086  2086 E AndroidRuntime:        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563)
07-12 11:12:18.508  2086  2086 E AndroidRuntime:        at android.view.LayoutInflater.rInflate(LayoutInflater.java:618)
07-12 11:12:18.508  2086  2086 E AndroidRuntime:        at android.view.LayoutInflater.rInflate(LayoutInflater.java:621)
07-12 11:12:18.508  2086  2086 E AndroidRuntime:        at android.view.LayoutInflater.rInflate(LayoutInflater.java:621)
07-12 11:12:18.508  2086  2086 E AndroidRuntime:        at android.view.LayoutInflater.inflate(LayoutInflater.java:407)
07-12 11:12:18.508  2086  2086 E AndroidRuntime:        at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
07-12 11:12:18.508  2086  2086 E AndroidRuntime:        at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
07-12 11:12:18.508  2086  2086 E AndroidRuntime:        at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:203)
07-12 11:12:18.508  2086  2086 E AndroidRuntime:        at android.app.Activity.setContentView(Activity.java:1647)
07-12 11:12:18.508  2086  2086 E AndroidRuntime:        at com.appname.droid.send.ConfirmActivity.onCreate(ConfirmActivity.java:40)
07-12 11:12:18.508  2086  2086 E AndroidRuntime:        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
07-12 11:12:18.508  2086  2086 E AndroidRuntime:        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2701)
07-12 11:12:18.508  2086  2086 E AndroidRuntime:        ... 11 more
07-12 11:12:18.508  2086  2086 E AndroidRuntime: Caused by: java.lang.reflect.InvocationTargetException
07-12 11:12:18.508  2086  2086 E AndroidRuntime:        at android.widget.Button.<init>(Button.java:65)
07-12 11:12:18.508  2086  2086 E AndroidRuntime:        at java.lang.reflect.Constructor.constructNative(Native Method)
07-12 11:12:18.508  2086  2086 E AndroidRuntime:        at java.lang.reflect.Constructor.newInstance(Constructor.java:446)
07-12 11:12:18.508  2086  2086 E AndroidRuntime:        at android.view.LayoutInflater.createView(LayoutInflater.java:500)
07-12 11:12:18.508  2086  2086 E AndroidRuntime:        ... 24 more
07-12 11:12:18.508  2086  2086 E AndroidRuntime: Caused by: android.content.res.Resources$NotFoundException: File res/drawable/btn_green.xml from drawable resource ID #0x7f020020
07-12 11:12:18.508  2086  2086 E AndroidRuntime:        at android.content.res.Resources.loadDrawable(Resources.java:1725)
07-12 11:12:18.508  2086  2086 E AndroidRuntime:        at android.content.res.TypedArray.getDrawable(TypedArray.java:601)
07-12 11:12:18.508  2086  2086 E AndroidRuntime:        at android.view.View.<init>(View.java:1885)
07-12 11:12:18.508  2086  2086 E AndroidRuntime:        at android.widget.TextView.<init>(TextView.java:369)
07-12 11:12:18.508  2086  2086 E AndroidRuntime:        at android.widget.Button.<init>(Button.java:69)
07-12 11:12:18.508  2086  2086 E AndroidRuntime:        ... 28 more
07-12 11:12:18.508  2086  2086 E AndroidRuntime: Caused by: java.lang.NullPointerException
07-12 11:12:18.508  2086  2086 E AndroidRuntime:        at android.graphics.drawable.DrawableContainer$DrawableContainerState.addChild(DrawableContainer.java:349)
07-12 11:12:18.508  2086  2086 E AndroidRuntime:        at android.graphics.drawable.StateListDrawable$StateListState.addStateSet(StateListDrawable.java:265)
07-12 11:12:18.508  2086  2086 E AndroidRuntime:        at android.graphics.drawable.StateListDrawable.inflate(StateListDrawable.java:173)
07-12 11:12:18.508  2086  2086 E AndroidRuntime:        at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:796)
07-12 11:12:18.508  2086  2086 E AndroidRuntime:        at android.graphics.drawable.Drawable.createFromXml(Drawable.java:737)
07-12 11:12:18.508  2086  2086 E AndroidRuntime:        at android.content.res.Resources.loadDrawable(Resources.java:1722)
07-12 11:12:18.508  2086  2086 E AndroidRuntime:        ... 32 more
07-12 11:12:18.515  1235  1235 W ActivityManager:   Force finishing activity com.appname.droid/.send.ConfirmActivity

而ConfirmActivity中的第40行是这样一段代码:

setContentView(R.layout.confirm);

这是 res/drawable/btn_green.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item 
        android:state_enabled="false"
        android:drawable="@drawable/green_large_btn_pressed" />
    <item 
        android:state_pressed="true" 
        android:state_enabled="true"
        android:drawable="@drawable/green_large_btn_pressed" />
    <item 
        android:state_focused="true" 
        android:state_enabled="true"
        android:drawable="@drawable/green_large_btn" />
    <item 
        android:state_enabled="true"
        android:drawable="@drawable/green_large_btn" />
</selector>

这个异常发生在整个应用程序中,它始终是我的按钮之一。我的 btn_gray 和 btn_orange 也发生同样的情况。

color_large_btn.png 和 color_large_btn_pressed.png 对于所有颜色都存在。

安卓版本: 目前在运行 Android 2.2 的 Droid2 上 运行 Android 2.1 的 Motorola Blur 也会发生这种情况 在运行 Android 2.3 的 HTC Evo 上似乎不会发生这种情况


此问题本质上是内存不足的情况。在将 xml 文件封装到 try-catch 块中之后,我能够克服无法加载文件/找到它们的初始错误。结果是活动的图像完全丢失,直到最终抛出实际的内存不足异常。

使固定?发现并删除了许多泄漏并缩小了几个图像文件的大小。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 自定义按钮状态选择器 XML 文件导致 Resource$NotFoundException 的相关文章

随机推荐

  • Python:如何了解串口设备事件,例如键盘事件

    你好 我是 python 新手 我能够连接到串行端口设备并想知道设备中发生的任何更改 如果按下设备中的任何按钮 我想捕获事件 我该怎么做 在Python中的pyHook的帮助下 我可以通过调用函数 OnKeyboardEvent 和 OnM
  • 模拟(起订量)或覆盖密封类中的只读属性?

    我遇到的情况是 在 MS Dynamics Crm 中 它使用密封类和只读属性返回一些对象 我只能假设使用内部构造函数或内部属性集 这些家伙并没有继承我可以使用的接口 显然 如果我可以控制这段代码 我就会有更多的控制权 但因为它位于底层的
  • 为什么 sizeof...(T) 这么慢?实现不带 sizeof...(T) 的 C++14 make_index_sequence

    我找到了 C 14 make index sequence 算法 的实现 template lt int gt struct index sequence using type index sequence template lt type
  • 如何将字典列表拆分为多个保持相同索引的列?

    我有一个数据框 它有一个时间戳作为索引 还有一个包含字典列表的列 index var A 2019 08 21 09 05 49 Date1 Aug 21 2017 9 09 51 AM Date2 Aug 21 2017 9 09 54
  • 如何在 umbraco 6 的管理面板中创建自定义部分?

    我希望在 umbraco 6 的管理面板中开发一个自定义用户部分 此部分可以管理用户详细信息以及管理员批准 有人知道如何实现这一点吗 显然它类似于在 Umbraco 4 中这样做 但在 Umbraco 6 中 不是对umbracoApp表
  • 对于画布,.drawImage 函数抛出“TypeError:预期图像或画布”

    我正在尝试在我的不和谐机器人中添加排名卡 为了做到这一点 我正在尝试使用画布 但是当我使用画布时 一切正常 直到我点击 drawImage方法 它给我一个错误 提示 TypeError 需要图像或画布 虽然我已经要求了canvas在全球范围
  • Python if any() 不起作用

    我想检查列表中是否有任何字符串元素phrases包含一组中的某些关键字phd words 我想用any但它不起作用 In 19 import pandas as pd import psycopg2 as pg def test phd w
  • 由 pywin32 生成的 python 可执行文件中的 dll 加载错误

    我使用 py2exe 使用 64 位 python 解释器和 32 位 python 解释器创建了 python 可执行文件 在我的程序中 我使用该模块pywin32 com 因此我在创建可执行文件之前下载并安装了该程序的 64 位和 32
  • Android sqlite,限制数据库中的行数[关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我一直有新数据进入应用程序 因此我想将表中的行数限制为 100 条记录 我将其描述为 FIFO 队列 每当有新数据 一次只有几行 进来时 表 底部 的旧数据就会被刷新并删除 由于它是
  • 用汇编语言定义“变量”

    我知道这是一个非常愚蠢的问题 但我有一段时间无法找到答案如何在 GAS AT T 汇编语言中正确声明和定义 变量 例如 我想要 5 个字节的缓冲区 两个 1 字节变量 最初值为 0 2 字节变量为 0 和 2 字节变量为 10 这段代码不能
  • 通过Java访问谷歌照片API

    我对 google API 很陌生 并且遇到了麻烦 我红色文档适用于 Java 的 Google 照片 API 然后我在 google API 控制台中创建了 OAuth 凭据并下载了它 credentials json 文件 之后我尝试访
  • 链接 .so 文件中的旧符号版本

    在 x86 64 linux 上使用 gcc 和 ld 我需要链接到较新版本的库 glibc 2 14 但可执行文件需要在旧版本 2 5 的系统上运行 由于唯一不兼容的符号是 memcpy 需要 memcpy GLIBC 2 2 5 但提供
  • Meteor 的 标签建议

    各位流星用户 在搜索教程和示例应用程序时 我发现了一个使用独特头部结构的教程和示例应用程序 这个特定的示例应用程序甚至没有标记任何地方 只是一个名为head html其中包含上述代码 我还了解到
  • C#同时更新两个文本框?

    假设我有两个文本框 一个包含二进制数据 另一个包含 ASCII 等效数据 如果用户更改其中任何一个 我如何同时更新另一个文本框 而无需按按钮 你必须防止无限循环 asciiTextBox变化binaryTextBox Text这改变了asc
  • 获取或插入 PostgreSQL

    我有一个对象表 其中包含多个属性的列和一个具有唯一 SERIAL 标识符的列 例如 CREATE TABLE person id SERIAL NOT NULL name VARCHAR 16 NOT NULL age INT NOT NU
  • 如何防止Android中移动网站的深度链接?

    我已经为我的所有活动添加了这样的深层链接
  • Android 字符串比较不起作用

    我很难使用 Java 比较 Android 中的两个字符串 我所做的是运行 HTTP get 请求 该请求返回 yes 或 no 并根据该请求决定是否启动新活动 我正在 Async onPostExecute 方法中执行字符串比较 尽管 H
  • 如何检查iframe是否加载失败? jquery?

    我现在有这个 jquery 代码并且工作正常 当用户单击提交按钮时 它会隐藏表单 显示加载器 然后将数据提交到链接并在 iframe 中加载输出 document ready function xxx form validate submi
  • 如何在html代码中使用json文件

    我有 json 文件mydata json 这个文件中是一些 json 编码的数据 我想在文件中获取这些数据index html并在 JavaScript 中处理这些数据 但不知道如何在 html 文件中连接 json 文件 请告诉我 这是
  • Android 自定义按钮状态选择器 XML 文件导致 Resource$NotFoundException

    由于 Resource NotFoundException 我的活动随机崩溃 并且总是由于我的自定义按钮的状态选择器文件之一而导致 而且崩溃是完全随机的 我将多次检查整个应用程序而不会发生崩溃 然后第 n 次转到 Activity 然后它会