栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Android ImageView: resolveUri failed on bad bitmap uri

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android ImageView: resolveUri failed on bad bitmap uri

如有错误欢迎指正

        想把网络的图片加载到自己的image view里面,所以用imageView.setImageURI(uri);   但是运行的时候没有加载图片,看logcat发现了标题的报错,上网搜了一下,突然醒悟,Uri本身就有别与URL,Uri是用来加载本地路径的,所以不能用imageView.setImageURI(uri);这个方法

        我们用Android中的一个服务叫 Picasso

        在build:gradle中的dependencies中添加一个依赖

implementation 'androidx.appcompat:appcompat:1.2.0'

然后可以直接在代码中用

//firstUrl 是一个图片的网络地址,second是一个imageview

Picasso.get(context).load(firstUrl).into(second);

        在写的时候遇到一个问题,Picasso爆红,找了好久原因我觉得可能是我先在类中调用了Picasso的方法,后写的依赖。我把Picasso.get(context).load(firstUrl).into(second);删掉重新写了一遍它就不爆红了。。。

        但这可能是运气,你们修改了依赖之后注意编译器有没有提示,点击sync now

         点击之后爆红就消失了

        但是程序运行的时候会报错

         他说我第81行写错了(在排错的过程中我使用了更新版本的picasso,所以这里换了种用法)

         我们把这个语句写到异步类的另一个函数去

        再次运行,解决

 

         根据现象总结经验,异步就是为了耗时操作,所以刚才的对json数据的加载和解析看成是一个耗时操作,我们接下来的这个Picasso操作是另一个操作,而这个操作是建立在上一个操作的基础之上的,我们应该保证上一个操作完成之后再做这个操作,如果你把这两个操作都放在doInBackground方法中,就没办法保证他们的同步性,所以AsyncTask给我们提供了几个不同的函数可以控制前后顺序,这个onPostExecute函数就是得等到doInBackground函数执行完毕之后才执行的,所以把Picasso操作写在这个函数之中。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/489723.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号