二进制 XML 文件第 2 行:膨胀类 android.widget.RelativeLayout 时出错

Posted

技术标签:

【中文标题】二进制 XML 文件第 2 行:膨胀类 android.widget.RelativeLayout 时出错【英文标题】:Binary XML file line #2: Error inflating class android.widget.RelativeLayout 【发布时间】:2020-03-07 09:07:30 【问题描述】:

请任何优秀的安卓开发者帮我解决这个问题

这里发生的问题:

android:background="@drawable/splash_bg"

splash_bg是矢量图

而我的 sdk 目标是 28 如果我删除这个 (android:background="@drawable/splash_bg") 然后代码通过这个然后任何其他活动都定义了背景并且它给出了错误:

我试过了:

1) 检查所有 xml 图像是否在可绘制而不是在 *-v24 中

2) splash_bg 的大小

但似乎没有任何工作可以解决这个问题

请帮我解决这个问题,我将非常感谢。

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

    android:layout_

    android:background="@drawable/splash_bg"

    android:id="@+id/vSplash"

    android:layout_>
    <LinearLayout
        android:layout_
        android:layout_
        android:orientation="vertical"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_margin="60dp"
        android:layout_alignParentStart="true">

<!--        <ImageView
            android:id="@+id/ivbelowLogo"
            android:layout_
            android:layout_
            android:layout_marginBottom="20dp"
            android:layout_marginTop="30dp"
            android:layout_marginStart="30dp"
            android:layout_marginEnd="30dp"
            android:layout_weight="0"
            android:layout_alignParentTop="true"
            android:adjustViewBounds="true"
            android:src="@drawable/splash_zayed_big" />-->

        <ImageView android:id="@+id/ivSplash"
            android:layout_
            android:layout_weight="4"
            android:layout_
            android:layout_centerVertical="true"
            android:layout_centerHorizontal="true"
            android:src="@drawable/splash_logo"
            android:layout_gravity="center"/>

        <ImageView android:id="@+id/ivSplashGif"
            android:layout_
            android:layout_
            android:layout_centerVertical="true"
            android:layout_centerHorizontal="true"
            android:src="@drawable/splash_loading"
            android:layout_gravity="center"/>


    </LinearLayout>


    <RelativeLayout
        android:id="@+id/versionLayout"
        android:layout_
        android:layoutDirection="ltr"
        android:layout_marginBottom="10dp"
        android:layout_centerHorizontal="true"
        android:layout_alignParentBottom="true"
        android:layout_>

        <TextView android:id="@+id/tvVersion"
            android:layout_
            android:layout_
            android:layout_centerHorizontal="true"
            android:textColor="@color/white"
            android:textSize="12dp"
            android:text="@string/version_name"/>

        <!--<TextView android:id="@+id/tvPowered"-->
            <!--android:layout_below="@id/tvVersion"-->
            <!--android:textSize="12dp"-->
            <!--android:layout_centerVertical="true"-->
            <!--android:layout_-->
            <!--android:layout_-->
            <!--android:text="@string/beta_version" />-->

    </RelativeLayout>

</RelativeLayout>

在所有设备上都可以正常工作,但少数设备会崩溃。

这是问题:

android.view.InflateException: Binary XML file line #2: Error inflating class android.widget.RelativeLayout

E/AndroidRuntime: FATAL EXCEPTION: main
    java.lang.RuntimeException: Unable to start activity ComponentInfoae.abc.xyzapp/ae.abc.xyzapp.ui.InitActivity: android.view.InflateException: Binary XML file line #2: Error inflating class android.widget.RelativeLayout
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
        at android.app.ActivityThread.access$800(ActivityThread.java:135)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:136)
        at android.app.ActivityThread.main(ActivityThread.java:5001)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
        at dalvik.system.NativeStart.main(Native Method)
     Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class android.widget.RelativeLayout
        at android.view.LayoutInflater.createView(LayoutInflater.java:620)
        at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
        at android.view.LayoutInflater.onCreateView(LayoutInflater.java:669)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:694)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:469)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
        at android.support.v7.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:469)
        at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
        at android.app.Activity.performCreate(Activity.java:5231)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233) 
        at android.app.ActivityThread.access$800(ActivityThread.java:135) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:136) 
        at android.app.ActivityThread.main(ActivityThread.java:5001) 
        at java.lang.reflect.Method.invokeNative(Native Method) 
        at java.lang.reflect.Method.invoke(Method.java:515) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
        at dalvik.system.NativeStart.main(Native Method) 
     Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Constructor.constructNative(Native Method)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
        at android.view.LayoutInflater.createView(LayoutInflater.java:594)
        at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 
        at android.view.LayoutInflater.onCreateView(LayoutInflater.java:669) 
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:694) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:469) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:353) 
        at android.support.v7.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:469) 
        at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
        at ae.mazadat.onlineauctionapp.ui.InitActivity.onCreate(InitActivity.java:87) 
        at android.app.Activity.performCreate(Activity.java:5231) 
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233) 
        at android.app.ActivityThread.access$800(ActivityThread.java:135) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:136) 
        at android.app.ActivityThread.main(ActivityThread.java:5001) 
        at java.lang.reflect.Method.invokeNative(Native Method) 
        at java.lang.reflect.Method.invoke(Method.java:515) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
        at dalvik.system.NativeStart.main(Native Method) 
     Caused by: android.content.res.Resources$NotFoundException: File res/drawable/splash_bg.xml from drawable resource ID #0x7f080216
        at android.content.res.Resources.loadDrawable(Resources.java:2096)
        at android.content.res.TypedArray.getDrawable(TypedArray.java:602)
        at android.view.View.<init>(View.java:3554)
        at android.view.View.<init>(View.java:3484)
        at android.view.ViewGroup.<init>(ViewGroup.java:464)
        at android.widget.RelativeLayout.<init>(RelativeLayout.java:236)
        at java.lang.reflect.Constructor.constructNative(Native Method) 
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
        at android.view.LayoutInflater.createView(LayoutInflater.java:594) 
        at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 
        at android.view.LayoutInflater.onCreateView(LayoutInflater.java:669) 
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:694) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:469) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:353) 
        at android.support.v7.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:469) 
        at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
        at ae.mazadat.onlineauctionapp.ui.InitActivity.onCreate(InitActivity.java:87) 
        at android.app.Activity.performCreate(Activity.java:5231) 
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233) 
        at android.app.ActivityThread.access$800(ActivityThread.java:135) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:136) 
        at android.app.ActivityThread.main(ActivityThread.java:5001) 
        at java.lang.reflect.Method.invokeNative(Native Method) 
        at java.lang.reflect.Method.invoke(Method.java:515) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
        at dalvik.system.NativeStart.main(Native Method) 
     Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #2: invalid drawable tag vector
        at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:933)
        at android.graphics.drawable.Drawable.createFromXml(Drawable.java:877)
        at android.content.res.Resources.loadDrawable(Resources.java:2092)
        at android.content.res.TypedArray.getDrawable(TypedArray.java:602) 
        at android.view.View.<init>(View.java:3554) 
        at android.view.View.<init>(View.java:3484) 
        at android.view.ViewGroup.<init>(ViewGroup.java:464) 
        at android.widget.RelativeLayout.<init>(RelativeLayout.java:236) 
        at java.lang.reflect.Constructor.constructNative(Native Method) 
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
        at android.view.LayoutInflater.createView(LayoutInflater.java:594) 
        at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 
        at android.view.LayoutInflater.onCreateView(LayoutInflater.java:669) 
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:694) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:469) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:353) 
        at android.support.v7.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:469) 
        at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
        at ae.mazadat.onlineauctionapp.ui.InitActivity.onCreate(InitActivity.java:87) 
        at android.app.Activity.performCreate(Activity.java:5231) 
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233) 
        at android.app.ActivityThread.access$800(ActivityThread.java:135) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:136) 
        at android.app.ActivityThread.main(ActivityThread.java:5001) 
        at java.lang.reflect.Method.invokeNative(Native Method) 
        at java.lang.reflect.Method.invoke(Method.java:515) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
        at dalvik.system.NativeStart.main(Native Method)

【问题讨论】:

发布您的 .xml 代码。 您收到“找不到资源”异常。可能值得检查此链接:***.com/questions/9161435/… 它在三星和选定的手机上崩溃,但需要修复....如果您能提供帮助,这将非常有帮助。谢谢 阿米特蒂瓦里?或任何人帮助PLZ 【参考方案1】:

只有在设备运行 Android >= 5.X.X 时才有效。那里引入了对矢量可绘制对象的支持。

AndroidX 库上的 ImageView 有一些兼容性选项,但我不确定您是否可以为布局的背景属性做任何事情。只需在您的 drawable-hdpi、drawable-xhdpi 等中添加一个 .png 即可支持 21 以下的 API 级别。

【讨论】:

检查这个:compileSdkVersion 28 buildToolsVersion '28.0.3' dexOptions javaMaxHeapSize "4g" defaultConfig minSdkVersion 16 targetSdkVersion 28 versionCode 90 versionName "4.1.3" multiDexEnabled true vectorDrawables.useSupportLibrary = true 跨度> 检查 buildToolsVersion '28.0.3' 和 targetSdkVersion 28 你的 targetSdkVersion 无所谓,我说的是你的手机/平板电脑运行的 Android 版本。 我正在使用 geny motion 来检查注释 3 告诉我一件事,比如如果我在所有可绘制文件夹中添加 splash_bg png 这样它就可以正常工作了,对吧?【参考方案2】:

确保您已按照in the official doc 的说明通过 Android 导入添加了您的 SVG 资源。

【讨论】:

【参考方案3】:

您可以通过其他方式处理这种情况。它似乎对某种方式有好处。

在您的RelativeLayout 中添加一个ImageView 并将您的splash_bg img 放在ImageView 中而不是RelativeLayout 中。通过这种方式,您的应用不会崩溃,您将获得解决方案。

如下所示更新您的 XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_
    android:background="@drawable/splash_bg" <!--remove from here -->
    android:id="@+id/vSplash"
    android:layout_>

<!-- put your splash here -->
    <ImageView  
            android:layout_
            android:layout_
            android:src="@drawable/splash_bg"/>


 <LinearLayout
        android:layout_
        android:layout_

        ...

</RelativeLayout>

希望这会有所帮助!

【讨论】:

你能告诉我吗 android:layout_ android:layout_ android:src="@drawable/splash_bg"/> 左右两边会留空格吗?如何解决我所做的原因及其左右空格 @FaisalLiaquat - 可能,这取决于您使用的图像。在您的 ImgView 中使用 android:fitsSystemWindows="true"android:scaleType="fitXY"。如果任何轴上有任何空间,它将使您的图像适合整个屏幕。谢谢! 感谢您的反馈!声望低于 15 人的投票将被记录,但不会更改公开显示的帖子得分。我已经标记了它,但还有一个问题,比如布局明智它的工作,但是当我尝试像 R.drawable.menu_icons_my_account 那样做时呢? 但是当我尝试像 R.drawable.menu_icons_my_account 那样做时它没有得到图像 @FaisalLiaquat - 您想从哪个文件夹/目录获取图像?

以上是关于二进制 XML 文件第 2 行:膨胀类 android.widget.RelativeLayout 时出错的主要内容,如果未能解决你的问题,请参考以下文章

二进制 XML 文件第 2 行:膨胀类 android.widget.RelativeLayout 时出错

二进制 XML 文件第 28 行:二进制 XML 文件第 28 行:膨胀类 <unknown> 时出错

膨胀类 ImageView 时出错 - android.view.InflateException:二进制 XML 文件第 10 行:膨胀类 ImageView 时出错

android.view.InflateException:二进制 XML 文件第 15 行:二进制 XML 文件第 19 行:膨胀类片段时出错

android.view.inflateexception 二进制 xml 文件第 1 行错误膨胀类 android.widget.relativeLayout

二进制 XML 文件第 13 行:膨胀类片段时出错