android.view.InflateException:二进制XML文件第12行:错误放大类<unknown>


147

我收到许多显示在主题中的错误。这些错误似乎是偶然的,我无法重现。从堆栈中,我可以了解到我的不同布局资源可能会发生这种错误。XML的范围也各不相同。

谁能解释为什么会发生此错误?我该如何解决这个问题?

叠放

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

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>

Answers:


266

膨胀异常实际上不是问题所在,但实际上来自布局中的另一个更深层次的问题,该问题随后包装在InflateException中。一个常见的问题是在尝试使加载可绘制资源的imageview膨胀时出现内存不足异常。如果这些资源之一具有较高的像素分辨率,则会占用大量内存,从而导致膨胀异常。

因此,基本上可以验证可绘制图像中的像素分辨率只是布局所需的最低要求。


4
@vnportnoy删除图像时,我也遇到相同的错误
Harin Kaklotar 2015年

4
我相信我的应用程序中没有任何可绘制对象
Arturas M 2015年

3
尝试检查您的语言包,可能缺少字符串资源。就我而言,这引起了一个问题。
Mohammed Subhi Sheikh Quroush

如果您的问题与仪器测试有关,请尝试以下操作:stackoverflow.com/q/24904445
Jerry Destremps

从我的XML中删除后,仍imageview的错误发生在类路径“com.android.tools.build:gradle:3.0.0-alpha2”和编译“com.android.support.constraint:约束的布局:1.0.2”
Subho's

24

ViewFlipper在布局放大期间将所有图像加载到内存中。因为我的图像很大,所以需要占用很多内存,因此我将其替换ViewFlipperImageSwitcher可以像动画一样更改图像的方法,ViewFlipper但一次仅加载一个图像。


23

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

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

看到那个链接


激活后,您应该始终使用app:srcCompat
Mohamed ALOUANE

但这不会产生随机崩溃。
Menna-Allah Sami

11

仅使用一个构造函数创建自定义视图时,我遇到了相同的错误,尝试为您的自定义视图定义所有构造函数。

   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();
    }

11

我知道问题已经回答,但我仍在发帖,以为可能有人遇到这种问题。

就我而言,问题是我将我的应用程序加载到电话中,该电话从res / layout /文件夹引用布局,从res / values / dimens引用@dimens的值,此处是font_22,它正在尝试访问,并在res / values-xlarge中定义/尺寸

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

我遇到了这个问题,因为我在使用IDE Eclipse时,在为布局文件夹编写xml时,我按ctrl + space进行提示,它会显示值以及values-xlarge文件夹中的所有值,而不管我要写入哪个文件夹。

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

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


9

我遇到了相同的错误,发现根本原因是:

使用应用程序上下文来扩大视图。

使用Activity Context进行膨胀修复了该错误。


6

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


6

万一有人遇到类似的问题,在放大视图时我也会遇到这样的问题:

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

固定通过替换getApplicationContext()this


5

我遇到此错误是因为我选择了主题作为“材质”主题。但是当我尝试在4.4.2上运行应用程序时,出现了此错误。

解决方案:选择Theme_holo作为主题


我的问题可能与您的问题相似,因为我只看到崩溃4.2.2。但是,从Material主题到Theme_holo可以从哪里更改?我的styles.xml或中没有看到关键字Material v21/styles.xml。看到我的问题:stackoverflow.com/questions/37883677/…–
卡特拉尔·皮永

4

此链接可能会对您有所帮助。尝试检查清单中是否有问题。如果可以使它再次发生,请发布整个堆栈跟踪,以便我们可以看到实际的错误。

编辑:我确定您已经检查了这一点,但是用于TourActivity布局的XML文件的第12行是什么?


我已经读过这个问题。这不是我的情况(至少我看不到)。向问题添加堆栈。
Solvek

更新的答案,您可以发布XML吗?如果您不介意的话,如果XML不太大,请发布整个XML。
凯文·科波克

在最初的问题中添加了XML
Solvek 2010年

嗯,不幸的是,我没有使用过merge或ViewFlipper的经验。这是否发生过使用merge或ViewFlipper的所有XML文件?
凯文·科波克

否。其他文件没有合并的脚蹼,但仍然存在相同的问题。
Solvek 2010年

4

对我来说,错误消息实际上在日志猫中是不够的,因此,我做了以下操作来找出导致问题的原因:

(在日志猫错误消息中,它说在我的HomeFragment.java中膨胀特定布局时发生了错误)

  1. 我在布局放大之前就设置了一个断点
  2. 我在调试模式下运行该应用程序,直到达到特定的断点
  3. 我用光标选择了行并Evaluate expression在其上运行:
    • Run > Evaluate Expression 要么 alt - F8
  4. 结果向我显示了有关问题根源的更多信息,在我的情况下,该问题是使用的可绘制文件tools:targetApi="lollipop"(该错误仅发生在较旧的设备上)。

谢谢!这帮助我找到了问题!
Sergey Stasishin

4

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

该错误仅是因为我试图使用: 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 !
 />

我建议以这种方式使用

将此添加到您的build.gradle应用程序

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"
     />

我希望这有帮助。


3

我知道这是一个已回答的问题,但是我看不到我遇到的原因。

原来是Android Studio将我的可绘制对象放在/ drawable-V24中。我的仿真器是API23。因此,最终找不到它。

解决方案是将所有可绘制对象移动到/ drawable文件夹(否-24)。


我也有同样的情况。
拉斐尔


2

我遇到了同样的错误,我解决了将可绘制对象从drawable-mdpi文件夹移动到可绘制文件夹的问题。我花了一些时间来意识到,因为在Eclipse中,一切都运行良好,而在Android Studio中,我遇到了这些难看的运行时错误。

编辑说明: 如果您是从eclipse迁移到Android Studio,而您的项目是从eclipse迁移,则可能会发生,因此请注意,在Android Studio中,某些事情与eclipse有所不同。


2

就我而言,当我使用 浮动操作”按钮并设置android:backgroundTint="#000"。然后,就不要设置backgroundTint并解决问题。希望对您有帮助。


谢谢,这确实是我的问题。需要使用app:backgroundTint而不是android:backgroundTint
Drago

2

对我来说,我的问题是

android:background="?attr/selectableItemBackground"

对于LinearLayout背景,一旦将其删除,测试就通过了。



1

我在API lvl 16上运行我的应用程序时遇到了相同的错误(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>

用常规颜色代替它可以解决我的问题。


1

我有同样的问题,它通过在drawable文件夹中的图像前面删除(24)的drawable-v24并将其替换为普通drawable来解决。


1

我知道这个线程很旧,但是仍然在回答它,所以没有人可以度过不眠之夜。

我正在重构一个旧项目,其布局文件都包含诸如的硬编码属性android:maxLength = 500。因此,我决定将其注册为我的 res/dimen文件<dimen name="max_length">500</dimen>

用我的res值重构了将近30个布局文件。你猜怎么了?下次我运行项目时,它开始抛出同样的错误InflateException

作为解决方案,需要重做所有更改并保持所有这些值与以前相同。

TLDR;

步骤1:一切正常。

第2步:为提高维护水平,我android:maxLength = 500<dimen name="max_length">500</dimen>和代替了android:maxLength = @dimen/max_length,这就是所有出错的地方(崩溃了InflateException)。

步骤3:一切运作不正常

第4步:再次替换android:maxLength = @dimen/max_length为我的所有工作android:maxLength = 500。解决。

第5步:一切正常。


1

通过将我所有可绘制项目从drawable-v24移至drawable来解决此问题


0

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

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

一个最被忽略的因素可能是在扩大视图时使用正确的上下文。请检查您是否在需要活动上下文的地方未使用ApplicationContext。虽然,ApplicationContext不一定总会出错,但是取决于您的视图层次结构,这可能至关重要。

我用BAD上下文解决了我的问题(在4天的时间内使用ApplicationContext而不是Activity!因此,请尝试解决。快乐编码!!)


0

我曾经遇到过同样的问题,我在xml中使用了View标签而不是View。替换为View类可解决此问题。

希望它对您也有帮助。


0

我们需要检查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
    }

为您的linearlayouts提供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}


0

对我而言,发生这种情况是因为我试图在同一布局文件中将xml矢量图形图像与普通png混合,

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


0
  • 我只是解决了这个问题,只是从drawable(v24)中删除了您的图片,然后将其粘贴到drawable文件夹中,这对我有用。


0

我有同样的错误 Crashlytics一个奇怪的设备上:摩托罗拉One Vision Android 5.1和20 GB(免费)RAM,已植根此设备最初随附Android 9.0,4 GB RAM

可能有人正在尝试破解我当前正在开发的应用,并且在处理多APK时遇到问题。因此无法找到可绘制对象,该应用会导致崩溃

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.