【问题标题】:App crashes when adding an ImageView?添加 ImageView 时应用程序崩溃?
【发布时间】:2018-05-15 23:50:18
【问题描述】:

每当我尝试在 Android Studio 3 中添加图像时,应用程序就会崩溃。请帮助。

LOGCAT:

12-02 01:13:14.289 10530-10530/? E/AndroidRuntime:致命异常: 主进程:com.divyam.demo2,PID:10530 java.lang.RuntimeException: 无法开始活动 组件信息{com.divyam.demo2/com.divyam.demo2.MainActivity}: android.view.InflateException:二进制 XML 文件行 #0:二进制 XML 文件行#0:在膨胀类 ImageView 时出错 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 在 android.app.ActivityThread.-wrap11(ActivityThread.java) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:148) 在 android.app.ActivityThread.main(ActivityThread.java:5417) 在 java.lang.reflect.Method.invoke(Native Method) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 引起 作者:android.view.InflateException:二进制 XML 文件第 0 行:二进制 XML 文件行#0:在膨胀类 ImageView 时出错 android.view.LayoutInflater.inflate(LayoutInflater.java:539) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:423) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:374) 在 android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:287) 在 android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139) 在 com.divyam.demo2.MainActivity.onCreate(MainActivity.java:16) 在 android.app.Activity.performCreate(Activity.java:6237) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 在 android.app.ActivityThread.-wrap11(ActivityThread.java) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:148) 在 android.app.ActivityThread.main(ActivityThread.java:5417) 在 java.lang.reflect.Method.invoke(Native Method) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 引起:android.view.InflateException:二进制 XML 文件第 0 行: 在膨胀类 ImageView 时出错 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:782) 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 在 android.view.LayoutInflater.rInflate(LayoutInflater.java:835) 在 android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:515) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:423) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:374) 在 android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:287) 在 android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139) 在 com.divyam.demo2.MainActivity.onCreate(MainActivity.java:16) 在 android.app.Activity.performCreate(Activity.java:6237) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 在 android.app.ActivityThread.-wrap11(ActivityThread.java) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:148) 在 android.app.ActivityThread.main(ActivityThread.java:5417) 在 java.lang.reflect.Method.invoke(Native Method) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 引起:android.content.res.Resources$NotFoundException:资源 ID #0x7f060054 在 android.content.res.Resources.getValue(Resources.java:1351) 在 android.support.v7.widget.AppCompatDrawableManager.loadDrawableFromDelegates(AppCompatDrawableManager.java:330) 在 android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:195) 在 android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:188) 在 android.support.v7.content.res.AppCompatResources.getDrawable(AppCompatResources.java:100) 在 android.support.v7.widget.AppCompatImageHelper.loadFromAttributes(AppCompatImageHelper.java:58) 在 android.support.v7.widget.AppCompatImageView.(AppCompatImageView.java:78) 在 android.support.v7.widget.AppCompatImageView.(AppCompatImageView.java:68) 在 android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:106) 在 android.support.v7.app.AppCompatDelegateImplV9.createView(AppCompatDelegateImplV9.java:1024) 在 android.support.v7.app.AppCompatDelegateImplV9.onCreateView(AppCompatDelegateImplV9.java:1081) 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:746) 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 在 android.view.LayoutInflater.rInflate(LayoutInflater.java:835) 在 android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:515) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:423) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:374) 在 android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:287) 在 android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139) 在 com.divyam.demo2.MainActivity.onCreate(MainActivity.java:16) 在 android.app.Activity.performCreate(Activity.java:6237) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 在 android.app.ActivityThread.-wrap11(ActivityThread.java) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:148) 在 android.app.ActivityThread.main(ActivityThread.java:5417) 在 java.lang.reflect.Method.invoke(Native Method) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) }

activity_main.xml

<?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.divyam.demo2.MainActivity"
    tools:layout_editor_absoluteY="81dp">

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="344dp"
        android:text="Button"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.498"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="18dp"
        app:layout_constraintBottom_toBottomOf="@+id/button2"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:srcCompat="@drawable/download" />

</android.support.constraint.ConstraintLayout>

主Activity.java

    public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }}

当我删除 ImageView 时,应用程序运行良好。 我已经尝试了所有调整图像大小并重新安装 android studio 的方法。

谁能找出问题所在?

【问题讨论】:

  • drawable 出了点问题 - 它无法找到它。它是一个有效的可绘制文件吗?
  • 在下面查看我的答案
  • 当你添加一些其他的 .jpg 图片时会发生什么?

标签: java android android-layout


【解决方案1】:

图像分辨率/尺寸是问题所在。只需检查并将图像文件的分辨率/尺寸更改为适合手机的尺寸即可。我遇到了同样的问题。

【讨论】:

  • 我完成了本教程:developer.android.com/codelabs/…,但它一直在崩溃。我检查了很多东西。然后,看你的帖子,是的,图片文件太大了!
【解决方案2】:

改变这个:

  <ImageView
        ...
        app:srcCompat="@drawable/download" />

到这里:

<ImageView
        ...
        android:src="@drawable/download" />

更新

检查drawable目录,可能你的drawable在其他 像 drawable-large , drawable-xxhdpi 等文件夹然后清理和 重建你的项目

【讨论】:

  • 你能把你的 download.png 文件放在 /drawable/ 文件夹中吗?
  • 是 png 文件还是 xml 文件?如果是 xml 则放内容
  • 这是一个jpg文件
  • 检查目录,可能你的drawable在drawable-large、drawable-xxhdpi等其他文件夹中,然后清理并重建你的项目。
  • 好的,谢谢。我的照片正在进入 drawable-v24。现在更改后它工作正常。
【解决方案3】:

你可能搞砸了difference between "@+id" and "@id"。尝试在您的activity_main.xml 中更正ImageView 的这一行

app:layout_constraintBottom_toBottomOf="@+id/button2"

进入

app:layout_constraintBottom_toBottomOf="@id/button2"

然后重试。

【讨论】:

  • 您使用的下载图片的文件类型是什么?
  • 请检查我的答案。
【解决方案4】:

使用 PNG 或 SVG 图像作为 imageView 的来源。并更改以下行:

app:srcCompat="@drawable/download"

收件人

android:src="@drawable/download"

【讨论】:

  • 我使用了 png 文件,但应用仍然崩溃
  • 你尝试清理和构建项目了吗?
  • 谢谢。我的问题得到了解决,图像将进入 drawable-v24 文件夹而不是 drawable。
  • 是的,我明白了。很高兴你得到帮助。 :)
【解决方案5】:

确保您的图像名称之间没有空格,并且以小写字母开头。此外,将其保存在 drawable 文件夹而不是 drawable(24) 中,否则 90% 的时间会报告错误。

【讨论】:

    【解决方案6】:

    基本上你需要按照下面提到的步骤进行试验和错误:

    • 尝试New Project并首先添加Image或任何可能的内容,然后运行模拟器。
    • 如果正常,则开始添加textView、按钮等 您的活动所需的对象并在每个 例如,您正在添加项目。
    • 如果一切正常,请将代码添加到旧项目中的 主要活动 并添加所有更改。

    它应该运行良好。实际上,我在我遇到类似问题的一个项目中尝试了此方法,并且成功了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-19
      • 1970-01-01
      • 2016-04-06
      • 1970-01-01
      • 2017-12-22
      相关资源
      最近更新 更多