基本上我正在解析一些带有图像的JSON并尝试将其加载到ImageView中。但 mBitmap 返回null。我不知道为什么,进一步的研究没有帮助..
以下是我正在使用的示例网址:
http://b.thumbs.redditmedia.com/ivBAJzLMJEkEy9jgTy3z4n-mO7gIGt5mQFU1Al5kJ-I.jpg
以下是所有相关代码:
public static Bitmap LoadImageFromUrl(String url){
try {
mBitmap = BitmapFactory.decodeStream((InputStream)new URL(url).getContent());
return mBitmap;
}catch (Exception e){
Log.d(TAG,"Error getting image");
return null;
}
}
这是调用方法的地方:
mListingModel.setmImageView(LoadImageFromUrl(data.getString(JSON_THUMBNAIL)));
这是我设置ImageView的地方:
if(mItem.getmImageView() != null) {
holder.imageView.setImageBitmap(mItem.getmImageView());
}
注意:我在AsyncTask中调用该方法,这不是问题。
答案 0 :(得分:1)
我曾经遇到过愚蠢的问题,例如在解码之前让我的流程到达终点,所以确保在解码流之前将其设置为0
例如
// Build your URL string
std::string test = decode(foo[5]);
std::string url = test + "filename.txt";
// Use std::string::c_str() to convert from C++ string
// to C raw string pointer const char*
downloadFile(url.c_str(), "/user/tmp/file.txt");
答案 1 :(得分:0)
你能检查一下这是否适合你:
InputStream in = new java.net.URL(downloadURL).openStream();
Bitmap avatarBmp = BitmapFactory.decodeStream(in);
in.close();
还提醒您在清单中添加此内容
<uses-permission android:name="android.permission.INTERNET" />
答案 2 :(得分:0)
Bitmap.decodeStream()的javadoc指出:
如果输入流为null,或者无法用于解码位图,则 function返回null
您正在传递URL.getContent()的结果,该结果在其javadoc中声明:
默认情况下,它返回一个InputStream,如果内容类型为,则返回null 回应未知。
所以也许你应该检查一下getContent()在将它传递给解码器之前是否返回null。
答案 3 :(得分:0)
我有同样的问题。
我试图找到解码失败的原因..但是我找不到。
我刚刚确认InputStream
和BufferedInputStream
不为空。
重新启动我的AVD ..后,即使我没有更改任何代码,问题也已解决。