2017-05-20 41 views
0

我有一個列表項目,點擊後我想將圖片作爲「putExtra」傳遞給另一個使用「getExtra」的活動。在Stackoverflow中也有類似的問題,它描述了幾個解決方案,但沒有一個對我有用。如何在getExtra中接收圖片網址並將其設置爲

第一項活動:

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

'elementList.get(position).getImage()'返回什麼? –

+0

它返回字符串網址:像這樣:「」https://tctechcrunch2011.files.wordpress.com/2017/05/battlefield-africa-sponsored.png?w=764&h=400&crop=1「 – user45678

回答

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例外。你將不得不加載你的位圖。我推薦PicassoGlide

相關問題