如何在getExtra中接收图像URL并进行设置

时间:2017-05-20 07:53:18

标签: android

我有一个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);

我如何克服它

1 个答案:

答案 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;我建议PicassoGlide