Android - Glide的使用

原创 2015年10月20日 15:33:20

Glide使用问题

  1. Glide setTag崩溃问题

java.lang.IllegalArgumentException: You must not call setTag() on a view Glide is targeting
- 原因:
and an Adapter which is using the usual ViewHolder pattern, i.e. inflating the view from resource (above) and setTag(vh);, now Glide wants to do the same when loading the image.
- 解决方案:
There could easily be a way to prevent conflicts, by allowing the ViewTarget users to set an ID to use with setTag(int, Object), even if it’s just a static method on ViewTarget (default beingView.NO_ID -> setTag(Object)).

  1. 如何为Glide设置Tag
    -> java.lang.IllegalArgumentException: The key must be an application-specific resource id.

    • 原因:

    官方的api文档中提到:“ The specified key should be an id declared in the resources of the application to ensure it is unique (see the ID resource type). Keys identified as belonging to the Android framework or not associated with any package will cause an IllegalArgumentExceptionto be thrown.”所以抛出IllegalArgumentException的原因就在于key不唯一,那么如何保证这种唯一性呢?定义一个final类型的int变量和硬编码一个值的方式都是行不通的。

private static final int TAG_ONLINE_ID = 1;
((Button) row.findViewById(R.id.btnPickContact)).setTag(TAG_ONLINE_ID,objContact.onlineid);
05-18 20:29:38.044: ERROR/AndroidRuntime(5453): java.lang.IllegalArgumentException: The key must be an application-specific resource id.
05-18 20:29:38.044: ERROR/AndroidRuntime(5453):     at android.view.View.setTag(View.java:7704)
05-18 20:29:38.044: ERROR/AndroidRuntime(5453):     at com.mypkg.viewP.inflateRow(viewP.java:518)


  • 解决

setTag是android的view类中很有用的一个方法,可以用它来给空间附加一些信息,在很多场合下都得到妙用。
setTag(Object tag)方法比较简单,这里主要谈一谈带两个参数的setTag方法。
如果只需要设置一个tag,那么直接调用setTag(Object tag)方法就可以轻松搞定,如果一定需要使用多个tag绑定,那么需要先在res/values/strings.xml中添加




使用的时候写成
imageView.setTag(R.id.tag_first, “Hello”);
imageView.setTag(R.id.tag_second, “Success”);
就可以了
取值的时候
String tag_first=v.getTag(R.id.tag_first).tostring();
就能取到值了!

相关文章推荐

图片加载库Glide——解决图片错乱+无法设置tag

今天在写一个图片加载类ImageLoader,在使用的时候想用Glide替代我写的ImageLoader,然后问题就出来了!!!第一个问题:在使用自己写的ImageLoader的时候,为了防止item...

You must not call setTag() on a view Glide is targeting的解决方案

You must not call setTag() on a view Glide is targeting的解决方案

Error “You must not call setTag() on a view Glide is targeting” when use Glide

项目中在使用Glide图片加载框架是遇到如下错误You must not call setTag() on a view Glide is targeting 报错原因大致是因为Glide加载的iam...

Glide使用详解(一)

Glide使用 Glide使用教程 Glide详解 Android图片加载 一. 下载在build.gradle中添加依赖: compile 'com.github.bumptech.glide...

java.lang.IllegalArgumentException: You must not call setTag() on a view Glide is targeting

java.lang.IllegalArgumentException: You must not call setTag() on a view Glide is targeting 错误处理问题描...

java.lang.IllegalArgumentException: You must not call setTag() on a view Glide is targeting

Glide使用问题 Glide setTag崩溃问题 java.lang.IllegalArgumentException: You must not call setTag() on...

Glide异常:java.lang.IllegaliArgumentException:You must not call setTag() on a view Glide is targeting

1.异常原因:     1.1Glide加载的iamgeView调用了setTag()方法,因为Glide已经默认为ImageView设置了Tag。 2解决方案: 2.1首先,在\res\valu...
  • MrYanXi
  • MrYanXi
  • 2017年09月21日 15:35
  • 134

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

How to solve the Glide Exception:”You must not call setTag() on a view Glide is targeting”The follow...

android setTag (int key, Object tag)抛出IllegalArgumentException的问题

setTag是android的view类中很有用的一个方法,可以用它来给空间附加一些信息,在很多场合下都得到妙用。 setTag(Object tag)方法比较简单,这里主要谈一谈带两个参数的s...

关于 OkHttp 依赖冲突问题的解决过程

OkHttp 是一个流行的开源网络请求库。许多第三方库的底层都是使用 OkHttp 实现网络请求,所以 OkHttp 相关的依赖冲突问题就变得很难避免,下文是我所遇到的一次关于 OkHttp 的依赖冲...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android - Glide的使用
举报原因:
原因补充:

(最多只允许输入30个字)