【问题标题】:Android Image Crashes The ApplicationAndroid 图像使应用程序崩溃
【发布时间】:2019-02-13 12:46:04
【问题描述】:

我正在尝试将图像添加到我新创建的应用程序中。但是,当我运行我的应用程序时,它崩溃了。我没有在我的应用程序中编写任何代码,因此我提供了 XML 代码和错误日志。 我在以前的应用程序中使用过 ImageViews。没有错误。 我已经优化了我的图像,但它仍然给了我错误。

图像细节

错误日志:

09-08 16:03:02.266 15137-15137/com.example.avail.instagramclone E/AndroidRuntime: 致命异常: main 进程:com.example.avail.instagramclone,PID:15137 java.lang.RuntimeException:无法启动活动 ComponentInfo{com.example.avail.instagramclone/com.example.avail.instagramclone.LoginActivity}: android.view.InflateException:二进制 XML 文件第 10 行:错误 膨胀类 ImageView 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2198) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2257) 在 android.app.ActivityThread.access$800(ActivityThread.java:139) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1210) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:136) 在 android.app.ActivityThread.main(ActivityThread.java:5097) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:515) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 在 dalvik.system.NativeStart.main(本机方法) 原因:android.view.InflateException: Binary XML file line #10: Error inflating class ImageView 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713) 在 android.view.LayoutInflater.rInflate(LayoutInflater.java:755) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:492) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:397) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:353) 在 android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:287) 在 android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139) 在 com.example.avail.instagramclone.LoginActivity.onCreate(LoginActivity.java:15) 在 android.app.Activity.performCreate(Activity.java:5248) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1110) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2162) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2257) 在 android.app.ActivityThread.access$800(ActivityThread.java:139) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1210) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:136) 在 android.app.ActivityThread.main(ActivityThread.java:5097) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:515) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 在 dalvik.system.NativeStart.main(本机方法) 原因:android.content.res.Resources$NotFoundException:资源 ID #0x7f060058 在 android.content.res.Resources.getValue(Resources.java:1123) 在 android.support.v7.widget.ResourcesWrapper.getValue(ResourcesWrapper.java:208) 在 android.support.v7.widget.AppCompatDrawableManager.loadDrawableFromDelegates(AppCompatDrawableManager.java:328) 在 android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:193) 在 android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:186) 在 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:77) 在 android.support.v7.widget.AppCompatImageView.(AppCompatImageView.java:67) 在 android.support.v7.app.AppCompatViewInflater.createImageView(AppCompatViewInflater.java:181) 在 android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:105) 在 android.support.v7.app.AppCompatDelegateImplV9.createView(AppCompatDelegateImplV9.java:1035) 在 android.support.v7.app.AppCompatDelegateImplV9.onCreateView(AppCompatDelegateImplV9.java:1092) 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:684) 在 android.view.LayoutInflater.rInflate(LayoutInflater.java:755) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:492) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:397) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:353) 在 android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:287) 在 android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139) 在 com.example.avail.instagramclone.LoginActivity.onCreate(LoginActivity.java:15) 在 android.app.Activity.performCreate(Activity.java:5248) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1110) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2162) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2257) 在 android.app.ActivityThread.access$800(ActivityThread.java:139) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1210) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:136) 在 android.app.ActivityThread.main(ActivityThread.java:5097) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:515) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 在 dalvik.system.NativeStart.main(Native Method)

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="wrap_content"
    android:layout_height="wrap_content"
    tools:context=".LoginActivity"
    tools:layout_editor_absoluteY="25dp">

    <ImageView
        android:id="@+id/imageView3"
        android:layout_width="220dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="85dp"
        android:layout_marginTop="150dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:srcCompat="@drawable/logo" />
</android.support.constraint.ConstraintLayout>

【问题讨论】:

  • 你的drawable文件夹中有一个叫logo的图片吗?它放在什么文件夹中? Android 无法找到一些资源来为您的 ImageView 充气,这可能是可绘制的。
  • 这是一个 png 图像,您使用的是 app:srcCompat,它是矢量图像的首选使用 android:src
  • 我解决了我的问题!我将图像放在 Drawable-v24 文件夹中,然后我在 XML 文件中使用了:android:src。

标签: android android-layout imageview


【解决方案1】:

如果图像在drawable v21 - 2 - 3 中,请检查您的图像drawable 文件夹,以便仅将其传输到可绘制文件夹并检查它。

【讨论】:

    【解决方案2】:

    使用android:src 而不是app:srcCompat

    【讨论】:

      【解决方案3】:

      您的日志文件显示这一行

      Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f060058
      

      这表示您在此行的 XML 中引用的图像文件“logo.png”

      app:srcCompat="@drawable/logo"
      

      不在正确的目录中。您需要根据图像的分辨率将文件放置在可绘制目录之一中。

      有关此主题的更多信息,请访问 Android 开发者网站“Create drawables from resource images

      【讨论】:

        【解决方案4】:

        使用 src 属性而不是 srcCompat 所以使用

        android:src="@drawable/logo"
        

        而不是

        app:srcCompat="@drawable/logo"

        还添加android:layout_marginLeft="85dp"以支持低于17的API版本

        【讨论】:

        • 我解决了我的问题!我将图像放在 Drawable-v24 文件夹中,然后我在 XML 文件中使用了:android:src。
        【解决方案5】:

        删除

            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
        

        并使用

         android:src="@drawable/logo"
        

        改为

         app:srcCompat="@drawable/logo" 
        

        【讨论】:

        • 我解决了我的问题!我将图像放在 Drawable-v24 文件夹中,然后我在 XML 文件中使用了:android:src。
        【解决方案6】:

        只需将您的图像替换为其他图像即可。

        <?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="wrap_content"
            android:layout_height="wrap_content"
            tools:context=".MainActivity"
            tools:layout_editor_absoluteY="25dp">
        
            <ImageView
                android:id="@+id/imageView3"
                android:layout_width="220dp"
                android:layout_height="wrap_content"
                android:layout_marginStart="85dp"
                android:layout_marginTop="150dp"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent"
                app:srcCompat="@drawable/logo" />
        </android.support.constraint.ConstraintLayout>
        

        如果您遇到问题请告诉我

        【讨论】:

        • 我解决了我的问题!我将图像放在 Drawable-v24 文件夹中,然后我在 XML 文件中使用了:android:src。
        猜你喜欢
        • 2015-09-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多