【问题标题】:com.bumptech.glide.load.engine.GlideException: Failed to load resource in kotlin?com.bumptech.glide.load.engine.GlideException:无法在 kotlin 中加载资源?
【发布时间】:2022-01-05 13:09:39
【问题描述】:

class com.bumptech.glide.load.engine.GlideException: Failed to load resource

class com.bumptech.glide.load.engine.GlideException: Failed to load resource in Android 10 only

enter image description here 我从 logcat 得到错误。上面两篇文章我都看了。我也使用了他们介绍的方法。仍然没有解决。我认为我的问题有不同的解决方案??

com.bumptech.glide.load.engine.GlideException: Failed to load resource
    There were 4 root causes:
    java.lang.RuntimeException(setDataSourceCallback failed: status = 0x80000000)
    java.lang.RuntimeException(setDataSourceCallback failed: status = 0x80000000)
    java.lang.RuntimeException(setDataSource failed: status = 0x80000000)
    java.lang.RuntimeException(setDataSource failed: status = 0x80000000)
     call GlideException#logRootCauses(String) for more detail

依赖

implementation "com.github.bumptech.glide:glide:4.12.0"
annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'

马里弗斯特

<uses-permission android:name="android.permission.INTERNET"/>
android:usesCleartextTraffic="true"

代码

@BindingAdapter("imageUrl")
fun bindImage(imageView: ImageView,imgUrl:String?){
    imgUrl?.let {
        val imageUri=imgUrl.toUri().buildUpon().scheme("https").build()
        Glide.with(imageView.context)
            .load(imageUri)
            .centerCrop()
            .apply(RequestOptions()
                .placeholder(R.drawable.loading_animation)
                .error(R.drawable.ic_broken_image))
            .listener(object :RequestListener<Drawable>{
                override fun onLoadFailed(
                    e: GlideException?,
                    model: Any?,
                    target: Target<Drawable>?,
                    isFirstResource: Boolean
                ): Boolean {
                    Log.d("aa","===${e}")
                    return false
                }

                override fun onResourceReady(
                    resource: Drawable?,
                    model: Any?,
                    target: Target<Drawable>?,
                    dataSource: DataSource?,
                    isFirstResource: Boolean
                ): Boolean {
                    return false
                }
            })
            .into(imageView)
    }
}

布局

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

    <data>
        <variable
            name="sport"
            type="com.example.retrofit2test.net.Sport" />
    </data>
    <androidx.cardview.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <androidx.constraintlayout.widget.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <ImageView
                android:id="@+id/imageView"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:adjustViewBounds="true"
                android:scaleType="centerCrop"
                app:imageUrl="@{sport.photo1}"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent"
                tools:srcCompat="@tools:sample/avatars" />
        </androidx.constraintlayout.widget.ConstraintLayout>
    </androidx.cardview.widget.CardView>
</layout>

【问题讨论】:

  • 打印imageUri的值并在此处查看,val imageUri=imgUrl.toUri().buildUpon().scheme("https").build()
  • 老公提瓦里谢谢你。
  • call GlideException#logRootCauses(String) for more detail你试过这样做吗?
  • a_local_nobody 这句话不知道在哪里加上,正确的写法……但是我用上面朋友介绍的方法找到了问题。谢谢

标签: java android kotlin android-glide


【解决方案1】:

这是因为您将图片网址转为Uri,您的设备上不存在该网址!如果你让 glide 加载一个Uri,它会检查文件。它不存在的原因很明显。所以你不需要把它转换成uri。相反,您只需将其传递给imageUrl。 所以,替换

Glide.with(imageView.context)
        .load(imageUri)
        .centerCrop()
        .apply(RequestOptions()
            .placeholder(R.drawable.loading_animation)
            .error(R.drawable.ic_broken_image))
        .listener(object :RequestListener<Drawable>{
            override fun onLoadFailed(
                e: GlideException?,
                model: Any?,
                target: Target<Drawable>?,
                isFirstResource: Boolean
            ): Boolean {
                Log.d("aa","===${e}")
                return false
            }

            override fun onResourceReady(
                resource: Drawable?,
                model: Any?,
                target: Target<Drawable>?,
                dataSource: DataSource?,
                isFirstResource: Boolean
            ): Boolean {
                return false
            }
        })
        .into(imageView)

Glide.with(imageView.context)
        .load(imageUrl)
        .centerCrop()
        .apply(RequestOptions()
            .placeholder(R.drawable.loading_animation)
            .error(R.drawable.ic_broken_image))
        .listener(object :RequestListener<Drawable>{
            override fun onLoadFailed(
                e: GlideException?,
                model: Any?,
                target: Target<Drawable>?,
                isFirstResource: Boolean
            ): Boolean {
                Log.d("aa","===${e}")
                return false
            }

            override fun onResourceReady(
                resource: Drawable?,
                model: Any?,
                target: Target<Drawable>?,
                dataSource: DataSource?,
                isFirstResource: Boolean
            ): Boolean {
                return false
            }
        })
        .into(imageView)

【讨论】:

  • 我使用不转换为uri,虽然有些图片无法显示。还是谢谢你。
  • 如果没有显示,那么您提供的网址无效。尝试复制 url 并粘贴到 google 以检查它是否加载。
猜你喜欢
  • 2019-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-02
  • 2012-12-22
  • 2017-05-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多