Android中Glide加载图片报Argument must not be null空指针如何解决
错误产生原因
从崩溃日志可以定位到空指针异常触发在Glide的into方法参数校验环节,Glide内部会校验传入的ImageView参数非空,此处报错说明你通过findViewById(R.id.imageView)获取到的ImageView对象为null,并非Glide本身的方法调用问题。
排查方向
- 检查Activity
onCreate方法的执行顺序,是否在调用setContentView()加载布局之前就执行了findViewById操作,未加载布局时无法找到对应控件,会返回null。 - 确认
setContentView加载的布局文件中,确实存在id为@+id/imageView的ImageView控件,若写错控件id、或者加载了错误的布局文件,都会导致找不到控件。 - 若你是在Fragment、自定义View等场景中使用该代码,检查是否误用了Activity上下文去查找控件,需要使用Fragment绑定的根布局、自定义View本身去执行
findViewById才能找到对应子控件。
解决方法
调整代码执行顺序,且增加非空判断规避崩溃,参考代码如下:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 第一步:先加载布局 setContentView(R.layout.activity_display_questions); // 第二步:再查找控件 ImageView imageView = findViewById(R.id.imageView); RequestOptions options = new RequestOptions() .placeholder(R.drawable.ic_launcher_background) .error(R.drawable.ic_launcher_background); // 增加非空判断,避免空指针 if (imageView != null) { Glide.with(this) .load("https://www.tutorialspoint.com/images/tp-logo-diamond.png") .apply(options) .into(imageView); } }
内容的提问来源于stack exchange,提问作者Lav Sharma
相关产品推荐
相关产品推荐

