2012年6月24日 星期日

選擇相簿裡的照片後,傳到另一個畫面

        在欣爺目前希望做的功能中,其中一項是要從手機相簿中選擇一張照片,利用 setAction(Intent.ACTION_GET_CONTENT); 去做,然後在後來的 startActivityForResult 中再利用 getDataString() 取得圖片資料...

但是,傳到另一個Activity執行一些圖片處裡的動作,因此這部分要如何做呢?



跨 Activity,當然必須要使用到 Intent.putExtras() & get.Extras 這個方法了
傳送一些數值、或者字串的話,就是把它塞入 Bundle 裡面再塞進 Intent.putExtras....
但是要傳送圖片?! 該如何做?

通常圖片顯示,是使用 Bitmap 方法,讓圖片在 ImageView上面呈現
但是如果要跨 Activity 將圖片傳到另一個畫面的 ImageView上面呈現!?
該怎麼做呢?這讓我傷腦筋了一陣子....
也Google了一陣子,嘗試了許多網路上蒐集的方法,但皆不盡理想
(PS: 其實應該是欣爺 Java 底子太差,還部會融會貫通的緣故吧...)

後來總算想到了 URI 方法,將圖片丟到 URI ,轉成字串再傳送就好,豁然開朗啊...
程式碼如下:
首先是發送端:

  1. Uri uri = Uri.parse(data.getDataString());//將擷取的圖片資料塞入URI
  2. Intent intent = new Intent(this, AnotherActivity.class); //指定目的端的Activity
  3. intent.putExtras("URI", uri.toString());//將URI轉成String塞入intent
  4. startActivity(intent);
接收端的部分:

  1. String photoUri = getIntent.getStringExtra("URI"); //接收傳來的Sting, 就是圖片啦..這樣就OK了
  2. ImageView imageView = imageView.setImageURI(Uri.parse(photoUri)); //指定image view來源

2 則留言:

匿名 提到...

哈囉您好
我有採用您的方法..
但是一直有顯示
"Type mismatch: cannot convert from void to ImageView"
這個錯誤
該宣告的也宣告了
不知道問題出在哪...
可以給點指示嘛??

KITA 提到...

哈哈哈
查資料查到你這邊來 XD