You must not call setTag() on a view Glide is targeting

参考

Glide加载图片报错You must not call setTag() on a view Glide is targeting
You must not call setTag() on a view Glide is targeting的解决方案

起因

今天将项目中的Picasso换成Glide结果在一个RecyclerView的Adapter中出现了这个错误。

原因

原因就是View使用setTag后导致Glide之前请求的标记被清除,强制转换过程中不能将你给定的类型判断为Request类型所致。
Glide为了防止加载图片错乱已经给图片打上标记了。

@Override
public Request getRequest() {
Object tag = getTag();
Request request = null;
if (tag != null) {
if (tag instanceof Request) {
request = (Request) tag;
  } else {
throw new IllegalArgumentException("You must not call setTag() on a view Glide is targeting");
  }
 }
  return request;
 }

解决方法

最直接的方法就是将删掉前面设置的setTag(),我就是这样解决的。
更多方案参考You must not call setTag() on a view Glide is targeting的解决方案

    原文作者:NICOLITE
    原文地址: https://www.jianshu.com/p/44251c8149b9
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞