使用Picasso库加载图片时触发NullPointerException崩溃问题求助
问题修复说明
疑问答复
你对Picasso的用法理解正确,已经完成ID绑定初始化的非空ImageView对象可以直接传入.into()方法,这是Picasso的标准用法,你的问题和库的接入配置无关,是代码写法错误导致的。
具体错误&修复步骤
- 空指针异常修复
你当前写的imageview_poster.findViewById(R.id.imageview_poster)是错误写法:此时imageview_poster还未被初始化,本身为null,调用它的方法自然触发空指针崩溃。正确写法是调用Activity的findViewById方法,将查找得到的控件赋值给该变量:
imageview_poster = findViewById(R.id.imageview_poster);
图片加载路径修复
你传入load方法的是相对路径/upload/iblock/95a/95aa56e9694ebd46e2855e7167966cfd.jpg,没有拼接完整域名,Picasso无法识别资源地址。需要把你注释的域名前缀拼接到路径前,生成完整可访问的URL。权限补充配置
需要在AndroidManifest.xml中添加网络访问权限,否则无法加载网络图片:
<uses-permission android:name="android.permission.INTERNET" />
修复后的完整代码
package com.example.my_ugf; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.widget.ImageView; import com.squareup.picasso.Picasso; public class MainActivity extends AppCompatActivity { final public String URL_poster = "https://udmfil.ru"; public ImageView imageview_poster; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 修正ImageView初始化方式 imageview_poster = findViewById(R.id.imageview_poster); // 拼接完整图片URL Picasso.get().load(URL_poster + "/upload/iblock/95a/95aa56e9694ebd46e2855e7167966cfd.jpg") .resize(50, 50) .centerCrop() .into(imageview_poster); } }
内容的提问来源于stack exchange,提问作者Сергей Дёшин
相关产品推荐
相关产品推荐

