【问题标题】:App crashes when trying to use setImageResource尝试使用 setImageResource 时应用程序崩溃
【发布时间】:2019-06-03 11:29:10
【问题描述】:

我正在构建另一个更大的应用程序,在某些时候我需要动态更改图像并且我的应用程序崩溃了。因此,为了测试功能,我制作了另一个非常简单的应用程序,它只显示带有代码的图片:

package com.example.imagetest;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ImageView imageView = (ImageView) findViewById(R.id.imageview);
        imageView.setImageResource(R.drawable.pugs);
    }
}

Android Studio报错为:03-07 11:30:01.146 20758-20758/? E/Trace:打开跟踪文件时出错:没有这样的文件或 目录 (2) 03-07 11:30:01.284 20758-20758/com.example.imagetest E/dalvikvm: 找不到类 'android.support.v4.view.ViewCompat$OnUnhandledKeyEventListenerWrapper', 从方法引用 android.support.v4.view.ViewCompat.addOnUnhandledKeyEventListener 03-07 11:30:01.286 20758-20758/com.example.imagetest E/dalvikvm: 可以 找不到从方法引用的类 'android.view.WindowInsets' android.support.v4.view.ViewCompat.dispatchApplyWindowInsets 03-07 11:30:01.298 20758-20758/com.example.imagetest E/dalvikvm:不能 查找从方法引用的类 'android.view.WindowInsets' android.support.v4.view.ViewCompat.onApplyWindowInsets 03-07 11:30:01.300 20758-20758/com.example.imagetest E/dalvikvm:不能 找到类'android.view.View$OnUnhandledKeyEventListener',引用 从方法 android.support.v4.view.ViewCompat.removeOnUnhandledKeyEventListener 03-07 11:30:01.306 20758-20758/com.example.imagetest E/dalvikvm: 可以 找不到类 'android.support.v4.view.ViewCompat$1',引用自 方法 android.support.v4.view.ViewCompat.setOnApplyWindowInsetsListener 03-07 11:30:01.354 20758-20758/com.example.imagetest E/dalvikvm: 可以 找不到类'android.graphics.drawable.RippleDrawable',引用 从方法 android.support.v7.widget.AppCompatImageHelper.hasOverlappingRendering 03-07 11:30:01.396 20758-20758/com.example.imagetest E/AndroidRuntime: 致命例外:主要 java.lang.RuntimeException:无法启动活动 ComponentInfo{com.example.imagetest/com.example.imagetest.MainActivity}: android.content.res.Resources$NotFoundException: 资源 ID

0x7f060063

还有很多其他的东西。奇怪的是:我将图片更改为另一个文件夹“mipmap”(在它处于可绘制对象之前:res/drawable)并且应用程序没有崩溃!但它也没有显示图像,屏幕上什么也没有。 XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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=".MainActivity">

    <ImageView
        android:id="@+id/imageview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>

不确定图片是否重要,但它是一张非常可爱的 3 只哈巴狗图片(分辨率约为 4k),我通过复制/粘贴将其添加到可绘制对象中。

【问题讨论】:

  • 它说找不到资源ID。请提供您将该图片放入的位置
  • 可能图片太大了。您可以使用较小的图像进行测试。顺便说一句,pugs 文件的扩展名是什么? png 还是 jpg?
  • 在错误代码和我写的 XML 之间:res/drawable。如果需要更具体:/home/krampus/Documents/imageTest/app/src/main/res/drawable-v24
  • 检查我的答案

标签: java android


【解决方案1】:

您的问题是资源(图像)的错误放置。您正在使用 API 低于 24 的设备,因此 API 23 及以下的资源为空,因为它们只有 API 24 及以上。

请将您的哈巴狗图片放在 drawable 文件夹中,而不是 drawable-v24 中,也不要使用大图!

【讨论】:

  • 尝试将图片移动到可绘制(不可绘制-v24)并且错误仍然存​​在。将图片更改为较小的图片(实际上它就像 400x400)并且现在可以使用。似乎错误主要是巨大的分辨率。
  • 建议不要在 android 中使用较大的图像,请检查:i.stack.imgur.com/JxzS6.jpg
【解决方案2】:
    imageView.setImageResource(R.drawable.pugs);

您需要在import 部分中指定哪个R

示例:

    import com.sample.me.mydraft.R

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多