使用Volley 的NetWorkImageView报空指针问题

2024-01-03 08:48

本文主要是介绍使用Volley 的NetWorkImageView报空指针问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近在使用NetWorkImageView的使用,发现如果图片的地址只要不正确,就会报空指针,情况如下图
错误日志

这不是坑人的么,图片的地址不是空的,只是一个错误的地址,就报这个错误
按照报错的提示,找到Volley框架中的Request类中的129行(使用jd-gui查看Volley的jar包)
Volley错误地方

首先这个Url肯定不是空的,所以这个三目运算符执行的应该是后面那个

Uri.parse(url).getHost().hashCode()

这几个方法是哪个报空指针的呢,测试一下

Log.e("siyehua1", Uri.parse("2312").toString() + "");
Log.e("siyehua2", Uri.parse("2312").getHost() + "");
Log.e("siyehua3", Uri.parse("2312").getHost().hashCode() + "");

妥妥的运行到第二个就空指针了,原来问题出现在这里
确定报错的方法
去API里看了一下getHost()这个方法

getHost()
public abstract String getHost()Gets the encoded host from the authority for this URI. For example, if the authority is "bob@google.com", this method will return "google.com". 
return:
the host for this URI or null if not present//如果不存在就返回空

至此,找到了罪魁祸首.
分析:当给出一个错误的地址,NetWorkImageView应该加载一个错误的图片(当我们有设置错误的图片时)
而不是报错.
解决方法:判断能否得到这个URI的host,如果不能得到,就说不能加载图片,这个时候我们要调用加载失败方法

if (Uri.parse(url).getHost() == null) {// 如果不能得到图片链接对应的hostnetImageView.setDefaultImageResId(R.drawable.error);//设置图片位加载失败的图片return;
}
//下面是正常使用NetWrok加载图片
if (imageLoader == null)imageLoader = new ImageLoader(requestQueue, new BitmapCache());
netImageView.setDefaultImageResId(R.drawable.ic_launcher);// 设置加载中的图片
netImageView.setErrorImageResId(R.drawable.error);// 设置加载失败的图片
netImageView.setImageUrl(url, imageLoader);// 设置图片

这篇关于使用Volley 的NetWorkImageView报空指针问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/565138

相关文章

Java使用Mail构建邮件功能的完整指南

《Java使用Mail构建邮件功能的完整指南》JavaMailAPI是一个功能强大的工具,它可以帮助开发者轻松实现邮件的发送与接收功能,本文将介绍如何使用JavaMail发送和接收邮件,希望对大家有所... 目录1、简述2、主要特点3、发送样例3.1 发送纯文本邮件3.2 发送 html 邮件3.3 发送带

Flask解决指定端口无法生效问题

《Flask解决指定端口无法生效问题》文章讲述了在使用PyCharm开发Flask应用时,启动地址与手动指定的IP端口不一致的问题,通过修改PyCharm的运行配置,将Flask项目的运行模式从Fla... 目录android问题重现解决方案问题重现手动指定的IP端口是app.run(host='0.0.

使用DeepSeek搭建个人知识库(在笔记本电脑上)

《使用DeepSeek搭建个人知识库(在笔记本电脑上)》本文介绍了如何在笔记本电脑上使用DeepSeek和开源工具搭建个人知识库,通过安装DeepSeek和RAGFlow,并使用CherryStudi... 目录部署环境软件清单安装DeepSeek安装Cherry Studio安装RAGFlow设置知识库总

Seata之分布式事务问题及解决方案

《Seata之分布式事务问题及解决方案》:本文主要介绍Seata之分布式事务问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Seata–分布式事务解决方案简介同类产品对比环境搭建1.微服务2.SQL3.seata-server4.微服务配置事务模式1

mysql关联查询速度慢的问题及解决

《mysql关联查询速度慢的问题及解决》:本文主要介绍mysql关联查询速度慢的问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql关联查询速度慢1. 记录原因1.1 在一次线上的服务中1.2 最终发现2. 解决方案3. 具体操作总结mysql

Python FastAPI入门安装使用

《PythonFastAPI入门安装使用》FastAPI是一个现代、快速的PythonWeb框架,用于构建API,它基于Python3.6+的类型提示特性,使得代码更加简洁且易于绶护,这篇文章主要介... 目录第一节:FastAPI入门一、FastAPI框架介绍什么是ASGI服务(WSGI)二、FastAP

Spring-AOP-ProceedingJoinPoint的使用详解

《Spring-AOP-ProceedingJoinPoint的使用详解》:本文主要介绍Spring-AOP-ProceedingJoinPoint的使用方式,具有很好的参考价值,希望对大家有所帮... 目录ProceedingJoinPoijsnt简介获取环绕通知方法的相关信息1.proceed()2.g

一文教你解决Python不支持中文路径的问题

《一文教你解决Python不支持中文路径的问题》Python是一种广泛使用的高级编程语言,然而在处理包含中文字符的文件路径时,Python有时会表现出一些不友好的行为,下面小编就来为大家介绍一下具体的... 目录问题背景解决方案1. 设置正确的文件编码2. 使用pathlib模块3. 转换路径为Unicod

Spring MVC跨域问题及解决

《SpringMVC跨域问题及解决》:本文主要介绍SpringMVC跨域问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录跨域问题不同的域同源策略解决方法1.CORS2.jsONP3.局部解决方案4.全局解决方法总结跨域问题不同的域协议、域名、端口

Maven pom.xml文件中build,plugin标签的使用小结

《Mavenpom.xml文件中build,plugin标签的使用小结》本文主要介绍了Mavenpom.xml文件中build,plugin标签的使用小结,文中通过示例代码介绍的非常详细,对大家的学... 目录<build> 标签Plugins插件<build> 标签<build> 标签是 pom.XML