例外: 二进制 XML 文件行 # 12: 扩充类 < 未知 > 时出错

我收到许多错误的种类显示在主题。这些错误似乎是偶然的,我无法重现它们。从堆栈中我可以了解到,这样的错误可能发生在我的不同布局资源。XML 行也在变化。

有人能解释一下为什么会出现这个错误吗? 我能做些什么来解决这个问题呢?

Stack

=============================================================


com.fsp.android.f generated the following exception:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.fsp.android.f/com.life360.android.ui.tour.TourActivity}: android.view.InflateException: Binary XML file line #12: Error inflating class <unknown>


--------- Stack trace ---------
1. android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2649)
2. android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2674)
3. android.app.ActivityThread.access$2200(ActivityThread.java:131)
4. android.app.ActivityThread$H.handleMessage(ActivityThread.java:1975)
5. android.os.Handler.dispatchMessage(Handler.java:99)
6. android.os.Looper.loop(Looper.java:123)
7. android.app.ActivityThread.main(ActivityThread.java:4702)
8. java.lang.reflect.Method.invokeNative(Native Method)
9. java.lang.reflect.Method.invoke(Method.java:521)
10. com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
11. com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
12. dalvik.system.NativeStart.main(Native Method)
-------------------------------


----------- Cause -----------
android.view.InflateException: Binary XML file line #12: Error inflating class <unknown>


1. android.view.LayoutInflater.createView(LayoutInflater.java:513)
2. com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
3. android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563)
4. android.view.LayoutInflater.rInflate(LayoutInflater.java:618)
5. android.view.LayoutInflater.rInflate(LayoutInflater.java:621)
6. android.view.LayoutInflater.inflate(LayoutInflater.java:382)
7. android.view.LayoutInflater.inflate(LayoutInflater.java:320)
8. android.view.LayoutInflater.inflate(LayoutInflater.java:276)
9. com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:208)
10. android.app.Activity.setContentView(Activity.java:1629)
11. com.solvek.sample.ui.BaseActivity.onCreate(BaseActivity.java:23)
12. com.solvek.sample.ui.tour.TourActivity.onCreate(TourActivity.java:161)
13. android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
14. android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2587)
15. android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2674)
16. android.app.ActivityThread.access$2200(ActivityThread.java:131)
17. android.app.ActivityThread$H.handleMessage(ActivityThread.java:1975)
18. android.os.Handler.dispatchMessage(Handler.java:99)
19. android.os.Looper.loop(Looper.java:123)
20. android.app.ActivityThread.main(ActivityThread.java:4702)
21. java.lang.reflect.Method.invokeNative(Native Method)
22. java.lang.reflect.Method.invoke(Method.java:521)
23. com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
24. com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
25. dalvik.system.NativeStart.main(Native Method)
-----------------------------


-------- Environment --------
Time =2010-12-20 08:27:35 AM
Device =tmobile/htc_espresso/espresso/espresso:2.1-update1/ERE27/216830:user/release-keys
Make =HTC
Model =T-Mobile myTouch 3G Slide
Product =htc_espresso
App =com.fsp.android.f, version 2.0.9 (build 1232)

这是 XML 的一个结果,但是在其他 XML 中也会出现这样的错误

<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<ViewFlipper android:layout_gravity="fill" android:id="@+id/flipper" android:layout_height="fill_parent" android:layout_width="fill_parent">
<ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_1"/>
<ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_2"/>
<ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_3"/>
<ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_4"/>
<ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_5"/>
<ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_6"/>
<ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_7"/>
<ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_8"/>
<ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_9"/>
<ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_10"/>
<ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_11"/>
</ViewFlipper>


<LinearLayout android:id="@+id/exit_bar" android:layout_gravity="top" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/blue_bar" android:visibility="invisible">
<Button android:background="@drawable/orange_btn" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_gravity="center" android:textStyle="bold" android:textColor="#000000" android:shadowColor="#ffffff" android:shadowRadius="1.6" android:shadowDx="1.5" android:shadowDy="1.3" android:id="@+id/exit_tour_btn" android:text="Exit" android:layout_marginLeft="20dip"/>
<TextView android:layout_height="wrap_content" android:textColor="#ffffff" android:layout_gravity="center" android:layout_width="110dip" android:layout_marginLeft="20dip" android:textSize="16dip" android:textStyle="bold" android:text="Life360 Tour"/>


</LinearLayout>


<Button style="@style/BlueBtn" android:text="Continue" android:layout_marginTop="40dip" android:id="@+id/continue_btn" android:visibility="gone" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_gravity="center" />


<FrameLayout android:id="@+id/bottom_bar" android:layout_gravity="bottom" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/blue_bar" android:visibility="invisible">
<ImageView android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/left" android:layout_gravity="left|center" android:background="@drawable/tour_left" android:layout_marginLeft="10dip"/>
<ImageView android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/right" android:layout_gravity="right|center" android:background="@drawable/tour_right" android:layout_marginRight="10dip"/>
</FrameLayout>
</merge>
350610 次浏览

这个链接 可能对你有帮助。尝试检查您的清单中的问题。如果可以让它再次发生,请发布整个堆栈跟踪,这样我们就可以看到实际的错误是什么。

编辑: 我相信您已经检查过了,但是您用于 TourActivity 布局的 XML 文件的第12行是什么呢?

在布局膨胀期间,ViewFlipper将所有图像加载到内存中。因为我的图像很大,它需要很多内存,我取代了 ViewFlipperImageSwitcher可以改变像 ViewFlipper的动画图像,但它只加载一个图像在时间。

我知道这个问题已经得到了回答,但我仍然怀着这样的想法发帖,也许有人会遇到这样的问题。

在我的例子中,问题是我正在将我的应用程序加载到手机上,这个应用程序引用 res/layout/file 的布局和 res/value/dimens 的@dimens 的值,这里是 font _ 22,它试图访问这个应用程序,它在 res/value-xlarge/dimens 中定义。

我实际上正在更新现有项目的 UI。

我之所以遇到这个问题是因为我使用 IDE Eclipse,当我为布局文件夹编写 xml 时,我使用 ctrl + space 作为提示,它显示来自值的所有值以及 value-xlarge 文件夹,而不管我为哪个文件夹编写。

我还知道,两个文件中的值应该相同,以映射到不同的屏幕。

希望这可以帮助有人遇到这种愚蠢的问题。

膨胀异常实际上并不是问题所在,而是来自布局中的另一个更深层次的问题,这个问题随后被包装在 InflateException中。 一个常见的问题是,当试图加载一个可绘制资源的 ImageView膨胀时,会出现内存不足异常。如果其中一个资源具有高像素分辨率,则需要大量内存,从而导致异常膨胀。

因此,基本上要验证所有图像绘制中的像素分辨率只是布局所必需的最小值。

我的图片大小只有14Kb,但问题是设计师给我的分辨率是1011px x 1819px (分辨率太高,因此导致了暴涨异常)

我遇到了同样的问题,发现根本原因是:

使用应用程序上下文来膨胀视图。

使用活动上下文充气修复了错误。

我有这个错误,因为我选择主题为材料主题。但是当我试图在4.4.2上运行应用程序时,它出现了这个错误。

解决方案: 选择 Theme _ holo 作为主题

如果使用支持库使用 VectorDrawable,而忘记使用 app:srcCompat而不是 android:src,也会发生这种情况

确切的错误是: 二进制 XML 文件行 # XX: 类 ImageView 膨胀错误

看到那个链接了吗

我也犯了同样的错误,并且解决了将我的绘图文件从文件夹 Draable-mdpi 移动到文件夹 Draable 的问题。我花了一些时间才意识到,因为在 Eclipse 中一切都工作得很完美,而在 Android Studio 中,我得到了这些难看的运行时错误。

编辑注释: 如果您正在从 eclipse 迁移到 Android Studio,并且您的项目来自 eclipse,那么这种情况可能会发生,因此要小心,在 Android Studio 中,事情与 eclipse 略有不同。

我在创建只有一个构造函数的自定义视图时也出现了同样的错误,请尝试为您的自定义视图定义所有的构造函数。

   public CustomWebView(Context context) {
super(context);
init();
}


public CustomWebView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}


public CustomWebView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}

我刚刚遇到了这个问题,并设法弄清楚是什么问题。在我的价值观中引用了一种颜色,这种颜色引起了一些问题。因此手动定义它,而不是使用下拉列表中的建议。那就成功了!

在我的例子中,当我使用 浮动按钮并设置 android:backgroundTint="#000"时会发生这个错误。那就不要设置 backgroundTint,问题就解决了。 希望对你有帮助。

对于我来说,log cat 中的错误消息实际上是不够的,所以我做了以下工作来找出问题的原因:

(在 log cat 错误消息中,它说错误发生在我的 HomeFragment.java 中的特定布局充气时)

  1. 我在布局膨胀之前放置了一个断点
  2. 我在调试模式下运行应用程序,直到它到达特定的断点
  3. 我选择了带有光标的行,并在其上运行 Evaluate expression:
    • Run > Evaluate Expressionalt - F8
  4. 结果向我展示了关于问题源的更多信息,在我的例子中,问题源是一个使用 tools:targetApi="lollipop"的可绘制文件(错误只发生在较旧的设备上)。

我发现了同样的错误,花了两天时间才确定是什么错误。

错误仅仅是因为我试图使用: android:background

而不是: app:srcCompat

在 SVG 文件中。

对你来说,我相信就是这样了

<ImageView
android:scaleType="fitXY"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:src="@drawable/tour_11"      <-- the error is here !
/>

我建议这样使用它

把这个添加到你的 建造,分级应用程序

android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}

还有

<androidx.appcompat.widget.AppCompatImageView  <-- use **AppCompatImageView** not **ImageView**
android:scaleType="fitXY"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:srcCompat="@drawable/tour_11"
/>

希望这个能帮上忙。

万一有人遇到类似的问题,我在夸大观点时就遇到了这样的问题:

View.inflate(getApplicationContext(), R.layout.my_layout, null)

通过用 this代替 getApplicationContext()来修复

我也面临过类似的问题。而对于任何人来说,这可能是代码中各种不良用法的问题,例如

  1. XML 中错误的布局标记
  2. 将大量资源直接加载到 ImageView,导致
  3. 使用样式的问题。

一个最容易被忽略的因素可能是 正确使用上下文,同时膨胀视图。请检查您没有在需要活动上下文的地方使用 应用背景。虽然,应用背景可能不会总是出错,但取决于您的视图层次结构,它可能是至关重要的。

我解决了我的问题与坏上下文(使用 应用背景而不是 活动在4天的跨度!如果能解决问题就试试吧。编码愉快! !

我也遇到过同样的问题,我在 xml 中使用了 View 标记而不是 View。替换为 View 类修复了这个问题。

希望对你也有帮助。

我们需要检查 API 版本。我用来给我的 LinearLayout像背景颜色

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/as_royalblue"
android:orientation="vertical"></LinearLayout>

当然我也有同样的错误,as_royalblue.xmldrawable文件夹中

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:angle="90"
android:endColor="@color/royalblue_s"
android:startColor="@color/royalblue_e" />
</shape>

以及我如何修复它 ,实际上它似乎是 API 问题,所以我们需要检查 API 级别是否高于 API 24,这样我们就能够按照我们喜欢的方式使用它。但是如果是24以下我们需要避免使用,只给一个正常的颜色或一个颜色不渐变混合一个。

fun checkAPI_N(): Boolean {
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N)
return true
else
return false
}

给你的线性布局设置 id,如果可以的话设置背景

 if(UtilKotlin.checkAPI_N()){
linlay_act_menu_container.setBackgroundResource(R.drawable.a_6)
linlay_act_menu_logo.setBackgroundResource(R.drawable.as_strain)
}else {//todo normal color background setting}

我知道这是一个有答案的问题,但我看不到我面对的原因。

是 Android Studio 将我的绘图工具放在/draable-V24中 我的模拟器是 API 23。所以,最终它找不到它。

解决方案是将所有可绘制文件移动到/可绘制文件夹(编号 -24)。

当我在 API lvl16上运行我的应用程序时也出现了同样的错误(26没问题)。这是因为我使用 ?attrr/colorAccent在我的形状可绘制:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">


<corners android:radius="8dp" />


<solid android:color="@attr/colorAccent" />


</shape>

把它换成普通的颜色解决了我的问题。

在我的例子中,我必须指定我在布局文件中使用的库 UI 组件的完整包名称。

我有同样的问题,它解决了删除绘制-v24与(24)在前面的图像在绘制文件夹,并取代他们与普通绘制。

对我来说,这是因为我试图在同一个布局文件中混合 xml 矢量图形图像和普通 png,

只有在我用 png 替换了 xml 矢量图形之后,它才开始工作

您应该将图像文件从“可绘制 -24”文件夹复制到“可绘制”文件夹。

我知道这个帖子已经很旧了,但是我仍然在回复它,这样就不会有其他人夜不能寐了。

我在重构一个旧项目,它的布局文件都包含硬编码 所以我决定把它注册到我的 res/dimen文件为 <dimen name="max_length">500</dimen>

用我的 re- 值完成了将近30个布局文件的重构。你猜怎么着?下一次我运行我的项目时,它开始抛出相同的 InflateException

作为一个解决方案,需要重做我所有的变化,并保持所有-这些值与以前一样。

TLDR;

第一步: 一切正常。

步骤2: 为了提高我的维护能力,我用 <dimen name="max_length">500</dimen>android:maxLength = @dimen/max_length代替了 android:maxLength = 500,这就是问题所在(用 InflateException崩溃)。

第三步: 所有运行坏

第四步: 重做我所有的工作,再次用 android:maxLength = 500代替 android:maxLength = @dimen/max_length。一切都得到了修复。

第五步: 一切正常。

  • 我刚刚解决这个问题只是删除你的图像从绘制(v24) ,只是粘贴到绘制文件夹这为我工作。

对我来说,我的问题是

android:background="?attr/selectableItemBackground"

到一个 LinearLayout 背景,一旦我删除它的测试通过。

通过将我所有可绘制的物品从可绘制的 v24移动到可绘制的,解决了这个问题

我在一个奇怪的设备上出现了同样的 Crashlytics错误: Motorola One Vision Android 5.1 and 20 GB (free) RAM,root 这个设备最初配备 Android 9.0,4 GB 内存

也许有人试图黑客的应用程序,我目前正在开发和处理多 APK 的问题。这样就找不到可画的东西,应用程序就会崩溃

我在 Kitkat 上也有同样的错误,那是因为我使用的是 android: 在其中一个图像视图上显示色彩。它可以在棒棒糖上运行,但是在 Kikkat 上会崩溃。

修正了它使用应用程序: 色彩在 AppCompatImageView,我正在处理。

我通过更新我的应用程序主题来继承材料组件来解决这个问题。

<style name="Theme.MyApp" parent="Theme.MaterialComponents.DayNight">
<!-- ... -->
</style>

移动图像或形状

  • 可绘制-v24到可绘制文件夹

    enter image description here

例外:

android.view.InflateException: Binary XML file line #32: Error inflating class androidx.appcompat.widget.SearchView
at android.view.LayoutInflater.createView(LayoutInflater.java:633)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
at androidx.databinding.DataBindingUtil.inflate(DataBindingUtil.java:126)
at androidx.databinding.DataBindingUtil.inflate(DataBindingUtil.java:95)
at com.foamkart.Fragment.SearchFragment.onCreateView(SearchFragment.kt:37)

如果您正在使用 导航组件并试图充气 androidx.fragment.app.FragmentContainerView,请确保您设置一个 startDestination对您的 导航图