二进制XML文件第0行:膨胀ImageView类错误

21

我正在使用Android Studio 3.0。
我已经很疲倦地尝试解决这个问题,但是应用程序无法运行,总是显示这个错误:Binary XML file line #0: Error inflating class ImageView。

这是我的主要活动文件main_activity.xml,我已经更改了它,使用了ConstraintLayout布局。

  <?xml version="1.0" encoding="utf-8"?>
 <android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.razoo.mywages.MainActivity">

<ImageView
    android:id="@+id/imageView2"
    android:layout_width="wrap_content"
    android:layout_height="517dp"
    android:contentDescription="@string/button3"
    android:scaleType="fitXY"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    android:src="@drawable/doctor" />

<Button
    android:id="@+id/step1btn"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_margin="4dp"
    android:background="@color/colorPrimary"
    android:onClick="nextPage"
    android:text="@string/button3"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.498"
    tools:layout_alignParentEnd="true"
    tools:layout_alignParentRight="true"
    tools:layout_alignParentTop="true"
    />

<Button
    android:id="@+id/button3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_margin="16dp"
    android:background="@color/colorPrimary"
    android:text="@string/button3"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    tools:layout_alignParentEnd="true"
    tools:layout_alignParentRight="true"
    tools:layout_alignParentTop="true" />

主活动的Java代码

public class MainActivity extends Activity {
Button btn1;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_activity);//the error point here
    btn1 = (Button) findViewById(R.id.step1btn);


}
public void nextPage(View view){
    Intent StartNewActivity = new Intent(MainActivity.this, Main2Activity.class);
    startActivity(StartNewActivity);

  }
 }

这是完整的日志记录,

  java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.razoo.mywages/com.example.razoo.mywages.MainActivity}: android.view.InflateException: Binary XML file line #0: Error inflating class android.widget.ImageView
                  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2305)
                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2365)
                  at android.app.ActivityThread.access$800(ActivityThread.java:148)
                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1283)
                  at android.os.Handler.dispatchMessage(Handler.java:102)
                  at android.os.Looper.loop(Looper.java:135)
                  at android.app.ActivityThread.main(ActivityThread.java:5272)
                  at java.lang.reflect.Method.invoke(Native Method)
                  at java.lang.reflect.Method.invoke(Method.java:372)
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:909)
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:704)
               Caused by: android.view.InflateException: Binary XML file line #0: Error inflating class android.widget.ImageView
                  at android.view.LayoutInflater.createView(LayoutInflater.java:633)
                  at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:55)
                  at android.view.LayoutInflater.onCreateView(LayoutInflater.java:682)
                  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:741)
                  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 android.view.LayoutInflater.inflate(LayoutInflater.java:365)
                  at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:387)
                  at android.app.Activity.setContentView(Activity.java:2188)
                  at com.example.razoo.mywages.MainActivity.onCreate(MainActivity.java:16)
                  at android.app.Activity.performCreate(Activity.java:5977)
                  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
                  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2258)
                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2365) 
                  at android.app.ActivityThread.access$800(ActivityThread.java:148) 
                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1283) 
                  at android.os.Handler.dispatchMessage(Handler.java:102) 
                  at android.os.Looper.loop(Looper.java:135) 
                  at android.app.ActivityThread.main(ActivityThread.java:5272) 
                  at java.lang.reflect.Method.invoke(Native Method) 
                  at java.lang.reflect.Method.invoke(Method.java:372) 
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:909) 
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:704) 
               Caused by: java.lang.reflect.InvocationTargetException
                  at java.lang.reflect.Constructor.newInstance(Native Method)
                  at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
                  at android.view.LayoutInflater.createView(LayoutInflater.java:607)
                  at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:55) 
                  at android.view.LayoutInflater.onCreateView(LayoutInflater.java:682) 
                  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:741) 
                  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 android.view.LayoutInflater.inflate(LayoutInflater.java:365) 
                  at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:387) 
                  at android.app.Activity.setContentView(Activity.java:2188) 
                  at com.example.razoo.mywages.MainActivity.onCreate(MainActivity.java:16) 
                  at android.app.Activity.performCreate(Activity.java:5977) 
                  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) 
                  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2258) 
                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2365) 
                  at android.app.ActivityThread.access$800(ActivityThread.java:148) 
                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1283) 
                  at android.os.Handler.dispatchMessage(Handler.java:102) 
                  at android.os.Looper.loop(Looper.java:135) 
                  at android.app.ActivityThread.main(ActivityThread.java:5272) 
                  at java.lang.reflect.Method.invoke(Native Method) 
                  at java.lang.reflect.Method.invoke(Method.java:372) 
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:909) 
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:704) 
               Caused by: android.content.res.Resources$NotFoundException: Resource "com.example.razoo.mywages:drawable/doctor" (7f060054)  is not a Drawable (color or path): TypedValue{t=0x1/d=0x7f060054 a=-1 r=0x7f060054}
                  at android.content.res.Resources.loadDrawableForCookie(Resources.java:2431)
                  at android.content.res.Resources.loadDrawable(Resources.java:2371)
                  at android.content.res.TypedArray.getDrawable(TypedArray.java:749)
                  at android.widget.ImageView.<init>(ImageView.java:146)
                  at android.widget.ImageView.<init>(ImageView.java:135)
                  at android.widget.ImageView.<init>(ImageView.java:131)
                  at java.lang.reflect.Constructor.newInstance(Native Method) 
                  at java.lang.reflect.Constructor.newInstance(Constructor.java:288) 
                  at android.view.LayoutInflater.createView(LayoutInflater.java:607) 
                  at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:55) 
                  at android.view.LayoutInflater.onCreateView(LayoutInflater.java:682) 
                  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:741) 
                  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 android.view.LayoutInflater.inflate(LayoutInflater.java:365) 
                  at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:387) 
                  at android.app.Activity.setContentView(Activity.java:2188) 
                  at com.example.razoo.mywages.MainActivity.onCreate(MainActivity.java:16) 
                  at android.app.Activity.performCreate(Activity.java:5977) 
                  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) 
                  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2258) 
                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2365) 
                  at android.app.ActivityThread.access$800(ActivityThread.java:148) 
                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1283) 
                  at android.os.Handler.dispatchMessage(Handler.java:102) 
                  at android.os.Looper.loop(Looper.java:135) 
                  at android.app.ActivityThread.main(ActivityThread.java:5272) 
                  at java.lang.reflect.Method.invoke(Native Method) 
                  at java.lang.reflect.Method.invoke(Method.java:372) 
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:909) 
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:704

3
请提供完整的错误日志,可能是您的 @drawable/doctor 出现了问题。 - tahsinRupam
2
请使用 android:Src 而不是 app:srcCompact。 - Tara
你可以在这里查看关于 app:srcCompat 和 android:src 的信息:[https://dev59.com/sVkR5IYBdhLWcg3w7hbE] - Hemant Parmar
我使用了android:src,它给了我一个错误。 - Israa Alothman
Caused by: android.content.res.Resources$NotFoundException: Resource "com.example.razoo.mywages:drawable/doctor" (7f060054) is not a Drawable (color or path): TypedValue{t=0x1/d=0x7f060054 a=-1 r=0x7f060054} - Phantômaxx
显示剩余3条评论
9个回答

42

在Android Studio 3.0.0及以上版本中,当我们尝试将图片添加到drawable文件夹时,它会要求你选择目标目录。此时,请选择drawable而不是drawable-v24

<code>enter image description here</code>

保持编码………:)

1
是的,这就是那个错误的主要原因,谢谢,它帮了很大的忙。 - Whats Going On

29
不要将您的图像粘贴到drawable(v-24)中,而是将其粘贴到drawable文件夹中,并清理项目,然后运行它就可以了。

3
你能描述一下这个问题的根本原因吗? - Bulma

8

一些SVG资源可能无法完全被支持。请在您的活动的onCreate()方法中添加以下行:

AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);

请确保在您的xml文件中使用以下属性作为ImageView的属性: app:srcCompact 而不是 android:src 来定义您的图片。

医生的图像是PNG文件还是矢量图? - HaroldSer
1
哦,我知道为什么我把它放在其他可绘制文件夹中了。 - Israa Alothman
1
使用xml文件中的app:srcCompat代替android:src来定义你的图片。 - Bhadresh
使用 app:srcCompact 属性,在 de.hdodenhof.circleimageview.CircleImageView 上无法显示图片? - Ramesh Bhati
1
app:srcCompat instead of app:srcCompact - صلي علي محمد - Atef Farouk
显示剩余4条评论

5

这种问题的解决方法:Binary XML file line #0: Error inflating class ImageView

解决方案:

  1. 检查您的图像文件夹,看看图像文件是否在Drawer或Drawer-24中。示例

Firebase图像文件位于Drawer-24中

  1. 如果图像文件在drawer-24中,则右键单击文件,选择重构,然后单击移动

  2. 然后删除单词“-24”,再次点击OK和RUN。

像这样

完成。


2

在我的情况下,由于使用了proguard,只有在发布版本中才会发生崩溃。因此,在我添加了以下这行代码后:

最初的回答:

-keep class android.support.v7.widget.** { *; }

proguard-rules.pro文件中,崩溃问题已经得到解决。最初的回答。

如果您安装了AndroidX会怎么样? - CoolMind
同样的问题,但尚未解决。 - Rajesh

1
在您的ImageView中使用android:src="@drawable/doctor"

0

我正在使用app:srcCompat而不是android:src。 它在Android Studio 3.0中有效。


0

如果您已经按照被接受的答案中的选项进行了设置,请检查向量图是否在“drawable-anydpi”文件夹中。将其移动到“drawable”文件夹中即可解决问题。


0
就我所知,当我们从资源管理器将图像粘贴到可绘制的文件夹中时,它会问是否要复制到drawable或drawable-v24中,如果您已经将图像粘贴到这两个目录结构中,或者有一个以上的图像具有不同的目录结构,那么它会显示此错误,请确保仅将图像复制到“drawable”目录结构中 :)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接