android - android 中的 InflateException 以及 Resources$NotFoundException
问题描述
我的代码中出现 InflateExcepetion 错误,并出现 Resource not found exception 。对于类似的异常,我已经跟进了很多线程,但所有解决方案似乎都提供了布局不膨胀的信息,图像尺寸太大或有时由于 OOM 异常而导致。我的错误日志将我带到我正在创建对话框对象的代码行。
下面是我得到这个异常类的代码行是MySettingsDialog。
dialog = new DialogView(context)
dialog.setContentPaddings(10, 10, 10, 10);
dialog.setDialogWidth(450);
dialog.setFirstButtonText(context.getString(R.string.button_apply));
dialog.setSecondButtonText(context.getString(R.string.button_cancel));
dialog.setThirdButtonText(null);
dialog.showThirdButton(false);
dialog.setTitle(context.getString(R.string.bo_settings_title));
PS> 这个异常并不经常出现,就像我必须运行一个自动化脚本来获取这个异常并崩溃一样。
以下是我附加的日志
android.view.InflateException: Binary XML file line #65: Error inflating class <unknown>
at android.view.LayoutInflater.createView(LayoutInflater.java:620)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)
03-13 16:37:38.742 W/LoggingEvent( 1798): at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
03-13 16:37:38.742 W/LoggingEvent( 1798): at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
03-13 16:37:38.742 W/LoggingEvent( 1798): at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
03-13 16:37:38.742 W/LoggingEvent( 1798): at com.abc.android.dialog.DialogView.init(DialogView.java:165)
03-13 16:37:38.742 W/LoggingEvent( 1798): at com.abc.android.dialog.DialogView.<init>(DialogView.java:81)
03-13 16:37:38.742 W/LoggingEvent( 1798): at com.abc.android.dialog.DialogView.<init>(DialogView.java:71)
03-13 16:37:38.742 W/LoggingEvent( 1798): at com.abc.android.dialog.DialogView.<init>(DialogView.java:63)
03-13 16:37:38.742 W/LoggingEvent( 1798): at com.abc.pqr.def.qqq.SettingsDialog.<init>(SettingsDialog.java:100)
03-13 16:37:38.742 W/LoggingEvent( 1798): at com.abc.pqr.def.qqq.MapViewData.BoSettings(MapViewData.java:8137)
03-13 16:37:38.742 W/LoggingEvent( 1798): at com.abc.pqr.def.qqq.MapViewData.access$41700(MapViewData.java:163)
03-13 16:37:38.742 W/LoggingEvent( 1798): Caused by: java.lang.reflect.InvocationTargetException
03-13 16:37:38.742 W/LoggingEvent( 1798): at java.lang.reflect.Constructor.constructNative(Native Method)
03-13 16:37:38.742 W/LoggingEvent( 1798): at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
03-13 16:37:38.742 W/LoggingEvent( 1798): at android.view.LayoutInflater.createView(LayoutInflater.java:594)
03-13 16:37:38.742 W/LoggingEvent( 1798): ... 23 more
03-13 16:37:38.742 W/LoggingEvent( 1798): Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f020145
03-13 16:37:38.742 W/LoggingEvent( 1798): at android.content.res.Resources.getValue(Resources.java:1118)
03-13 16:37:38.742 W/LoggingEvent( 1798): at android.content.res.Resources.getDrawable(Resources.java:693)
03-13 16:37:38.742 W/LoggingEvent( 1798): at android.widget.CompoundButton.setButtonDrawable(CompoundButton.java:185)
03-13 16:37:38.742 W/LoggingEvent( 1798): at com.abc.android.widget.control.CheckBox.init(CheckBox.java:39)
03-13 16:37:38.742 W/LoggingEvent( 1798): at com.abc.android.widget.control.CheckBox.<init>(CheckBox.java:28)
03-13 16:37:38.742 W/LoggingEvent( 1798): ... 26 more
03-13 16:37:38.744 E/WindowsManagerApplication( 1798): *** UNCAUGHT EXCEPTION IN THREAD Thread[main,5,main] ***
03-13 16:37:38.744 E/WindowsManagerApplication( 1798): android.view.InflateException: Binary XML file line #65: Error inflating class <unknown>
03-13 16:37:38.744 E/WindowsManagerApplication( 1798): at android.view.LayoutInflater.createView(LayoutInflater.java:620)
03-13 16:37:38.744 E/WindowsManagerApplication( 1798): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
03-13 16:37:38.744 E/WindowsManagerApplication( 1798): at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
03-13 16:37:38.744 E/WindowsManagerApplication( 1798): at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)
03-13 16:37:38.744 E/WindowsManagerApplication( 1798): at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
03-13 16:37:38.744 E/WindowsManagerApplication( 1798): at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
03-13 16:37:38.744 E/WindowsManagerApplication( 1798): at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
03-13 16:37:38.744 E/WindowsManagerApplication( 1798): at com.abc.android.dialog.DialogView.init(DialogView.java:165)
03-13 16:37:38.744 E/WindowsManagerApplication( 1798): at com.abc.android.dialog.DialogView.<init>(DialogView.java:81)
03-13 16:37:38.744 E/WindowsManagerApplication( 1798): at com.abc.android.dialog.DialogView.<init>(DialogView.java:71)
03-13 16:37:38.744 E/WindowsManagerApplication( 1798): at com.abc.android.dialog.DialogView.<init>(DialogView.java:63)
03-13 16:37:38.744 E/WindowsManagerApplication( 1798): at com.abc.pqr.def.qqq.SettingsDialog.<init>(MySettingsDialog.java:100)
03-13 16:37:38.744 E/WindowsManagerApplication( 1798): at com.abc.pf.map.data.MyMap.checkUIForBoSettings(MyMap.java:8137)
对话框视图.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/dialogRoot"
android:layout_width="336dp"
android:layout_height="wrap_content"
android:background="@drawable/dialog_window_expand_bkg"
android:minHeight="233dp"
android:minWidth="336dp"
android:orientation="vertical" >
<RelativeLayout
android:id="@+id/llTopBar"
android:layout_width="match_parent"
android:layout_height="48dp"
android:background="@drawable/header_dialog" >
<ImageView
android:id="@+id/titleIcon"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_alignParentLeft="true"
android:visibility="gone" />
<TextView
android:id="@+id/tvTitle"
style="@style/TextAppearance.abcDialog.Small.Title"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_toRightOf="@id/titleIcon"
android:gravity="center"
android:text="Title" />
<ImageButton
android:id="@+id/close"
style="@style/CloseStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="8dp"
android:layout_marginLeft="8dp"
android:visibility="gone" />
</RelativeLayout>
<FrameLayout
android:id="@+id/flContent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:minHeight="162dp"
android:paddingBottom="20dp"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:paddingTop="20dp" >
</FrameLayout>
<LinearLayout
android:id="@+id/rlBottomBar"
android:layout_width="match_parent"
android:layout_height="54dp"
android:background="@drawable/button_area_dialog"
android:gravity="right|center_vertical"
android:paddingRight="12dp" >
<com.abc.android.widget.control.CheckBox
android:id="@+id/bottom_check"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="4dp"
android:visibility="gone"
android:layout_gravity="center_vertical"
android:scaleX="0.8"
android:scaleY="0.8"
/>
<TextView
android:id="@+id/bottom_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:textColor="#333333"
android:textSize="18sp"
android:layout_weight="1"/>
<Button
android:id="@+id/btFifth"
style="@style/ButtonSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="12dp"
android:ellipsize="end"
android:minWidth="78dp"
android:paddingLeft="12dp"
android:paddingRight="12dp"
android:singleLine="true"
android:layout_gravity="center_vertical"
android:text="Fifth"
android:visibility="gone"/>
<Button
android:id="@+id/btFourth"
style="@style/ButtonSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="12dp"
android:ellipsize="end"
android:minWidth="78dp"
android:paddingLeft="12dp"
android:paddingRight="12dp"
android:singleLine="true"
android:layout_gravity="center_vertical"
android:text="Fourth"
android:visibility="gone"/>
<Button
android:id="@+id/btThird"
style="@style/ButtonSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="12dp"
android:ellipsize="end"
android:minWidth="78dp"
android:paddingLeft="12dp"
android:paddingRight="12dp"
android:singleLine="true"
android:layout_gravity="center_vertical"
android:text="Third" />
<Button
android:id="@+id/btSecond"
style="@style/ButtonSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="12dp"
android:ellipsize="end"
android:minWidth="78dp"
android:paddingLeft="12dp"
android:paddingRight="12dp"
android:singleLine="true"
android:layout_gravity="center_vertical"
android:text="Second" />
<Button
android:id="@+id/btFirst"
style="@style/ButtonSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="12dp"
android:ellipsize="end"
android:minWidth="78dp"
android:paddingLeft="12dp"
android:paddingRight="12dp"
android:singleLine="true"
android:layout_gravity="center_vertical"
android:text="First" />
</LinearLayout>
</LinearLayout>
解决方案
您的布局文件上有一个复选框,它的可绘制对象引用错误。
推荐阅读
- laravel - 登录数据库后如何存储网络推送通知设置
- c - 无法从结构中的二维数组打印字符串?
- angular - 使用 AudioContext 未在 Firebox 中播放音频声音
- java - 您不能使用 JPA (Hibernate) 对已关闭的 ResultSet 进行操作
- c - 静态结构全局
- python-3.x - 如何从 thread.run 获取返回值
- powershell - 没有 OutFile 的调用 WebRequest?
- node.js - 即使我启用了 lib `es2019`,为什么我在 TypeScript 中没有可用的 Array.prototype.flat?
- python - 从一个范围内获取 n 个数字,包括 x
- macos - 如何在 macOS 上将“\x”插入到 hexdump 格式字符串中?