你知道为什么我在调用getInputStream()函数时会捕获NullPointerException吗?
我做了一个URLConnection的日志,链接是正确的...我无法弄清楚问题是什么。
public Bitmap getBitmap(String resolution) {
URL url = null;
Bitmap bmp = null;
switch(resolution) {
case "thumb":
url = thumbUrl;
break;
case "low":
url = lowresUrl;
break;
case "standard":
url = standardresUrl;
break;
}
try {
URLConnection conn = url.openConnection();
InputStream in = conn.getInputStream();
bmp = BitmapFactory.decodeStream(in);
in.close();
}
catch (Exception e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return bmp;
}
答案 0 :(得分:2)
根据您发布的代码,唯一合理的结论是conn
是null
。你可以使用conditional operator ? :
(三元)之类的
// InputStream in = conn.getInputStream();
InputStream in = (conn != null) ? conn.getInputStream() : null;
或类似
InputStream in = null;
if (conn != null) {
in = conn.getInputStream();
}
我还注意到您的switch
没有default:
,因此url
null
也可能Exception
(但您会得到openConnection()
如果是这种情况,请{{1}}。
答案 1 :(得分:1)
感谢您的所有答案。 问题出在这一行的catch块中:
Log.e("Error", e.getMessage());
getMessage()函数返回null。
答案 2 :(得分:0)
在try-catch之前声明并初始化变量。 在java编程中,不要尝试在try catch中声明变量。在try catch之前执行它。
URLConnection conn=null;
InputStream in=null;
try {
conn = url.openConnection();
in = conn.getInputStream();
bmp = BitmapFactory.decodeStream(in);
in.close();
}