三種方法對應三種情況:
1.傳送本地res中的圖片
如果是本地res中的資源文件可以用intent.putExtra(""id"", R.id.xxx);傳遞一個對應的id過去。在新activity中通過id取出圖片。getResources().getDrawable(R.id.xxx);
傳送圖片的Activity:
private ListView lstmenu; private int[] imageid={R.drawable.pic1,R.drawable.pic2}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_itemdetail); lstmenu=(ListView) findViewById(R.id.lstmenu); lstmenu.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position,long id) { //點擊的Item的內容通過參數帶入itemActivity,並打開 Intent intent = new Intent(itemdetailActivity.this,itemActivity.class); //創建Intent intent.putExtra("detail_img",imageid[position]); //將要傳遞的信息放入Intent intent.putExtra("detail_text1",title[position]); //將要傳遞的信息放入Intent intent.putExtra("detail_text2",detail[position]); //將要傳遞的信息放入Intent startActivity(intent); } });
}
接收圖片的Activity:
int img_id = getIntent().getIntExtra("detail_img",0); //接收圖片的id img.setImageResource(img_id);
2.不是本地資源文件或者adapter中沒有存儲id
如果不是本地資源文件或者adapter中沒有存儲id,可以把drawable轉為bitmap,用intent.putExtra(""bitmap"", bitmap);傳遞過去。因為intent只能傳遞實現序列化的類,即繼承java 的Serializable接口或者android的Parcelable接口。drawable沒有實現該接口所以不能傳遞。
3.拉取的圖片
如果是通過線程什么的從網上拉取的圖片,可以定義一個下載的工具類,並定義一個static的靜態Map集合,每拉取成功一張圖片就把該圖片存入Map中作為緩存。key是該圖片的拉取地址。然后通過intent把地址傳遞過去。在新activity中通過該工具類取得靜態map,並通過傳遞過來的地址中map中取出該圖片。"