我有一个List Item,点击其中我想将Image作为“putExtra”传递,并使用“getExtra”在Another Activity中获取它。 Stackoverflow中有类似的问题描述了一些解决方案,但它们都不适用于我。
第一项活动:
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long id) {
intent.putExtra("imageurl", elementList.get(position).getImage());
startActivity(intent);
}
});
当我在第二次活动中检索它时,我什么都没得到。它给出了错误说:
E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: https:/tctechcrunch2011.files.wordpress.com/2017/05/battlefield-africa-sponsored.png?w=764&h=400&crop=1 (No such file or directory)
第二项活动:
image = (ImageView) findViewById(R.id.ivImage);
myUri = Uri.parse(b.getString("imageurl"));
image.setImageURI(myUri);
我如何克服它
答案 0 :(得分:1)
请注意例外来源:java.io.FileNotFoundException
。
如果您在ImageView#setImageURI
中设置了断点,则您指定的Uri
会引导您BitmapFactory#decodeFile
:
public static Bitmap decodeFile(String pathName, Options opts) {
Bitmap bm = null;
InputStream stream = null;
try {
stream = new FileInputStream(pathName);
bm = decodeStream(stream, null, opts);
} catch (Exception e) {
/* do nothing.
If the exception happened on open, bm will be null.
*/
Log.e("BitmapFactory", "Unable to decode stream: " + e);
} finally {
if (stream != null) {
try {
stream.close();
} catch (IOException e) {
// do nothing here
}
}
}
return bm;
}
从上面可以看出,问题很明显 - Uri
应该是一个文件路径而你的文件路径不是,因此java.io.FileNotFoundException
例外。你必须以不同的方式加载你的Bitmap;我建议Picasso或Glide。