onClick에 해당 버튼을 누르면, 선택된 이미지들이 다른 액티비티로 (이전 액티비티로) 전달이 되어야 합니다.
case R.id.actionbar_right :
ArrayList<String> itemList = imageAdapter.getCheckedItems();
Toast.makeText(MainActivity.this, "Total photos selected: "+itemList.size(), Toast.LENGTH_SHORT).show();
for (int i = 0; i < itemList.size(); i++){
Toast.makeText(MainActivity.this, itemList.get(i).toString(), Toast.LENGTH_SHORT).show();
}
//arrayList intent 로 넘기니까 out of memory 오류나네.
// Intent intent = new Intent();
// if ( itemList.size() != 0){
// intent.putExtra("gallery_items", itemList);
// setResult(RESULT_OK, intent);
// } else{
// setResult(RESULT_CANCELED);
// }
// finish(); break;
}
주석 처리를 한 부분에서 갑자기 out of memory라고 하면서 강제종료 됩니다.
itemList (arrayList) 에 들은 것은
Toast.makeText(MainActivity.this, itemList.get(i).toString(), Toast.LENGTH_SHORT).show();
이렇게 해서 출력해보니
/storage/emulated/0/DCIM/Screenshot/Screenshot_찍은날짜.png
이런식으로 저장 된 경로가 나옵니다. ㅠㅠ
이미지 UrI
imageUrls.add(imagecursor.getString(dataColumnIndex));
이미지 어댑터
imageAdapter = new ImageAdapter(this, imageUrls);
이전의 액티비티에서 값을 전달받아오는 부분입니다.
protected void onActivityResult(int requestCode, int resultCode, Intent data){
if ( requestCode == BEFORE_ACTIVITY_CODE){
LinearLayout linear = (LinearLayout)findViewById(R.id.layout_gallery_list);
if (resultCode != RESULT_OK){
txt.setText("Result Empty");
} else {
Serializable intentListData = data.getSerializableExtra("gallery_items");
ArrayList<String> items = (ArrayList<String>)intentListData;
for (int i = 0; i < items.size(); i++){
TextView img = new TextView(null);
img.setText(items.get(i));
linear.addView(img);
// for (int i = 0; i < items.size(); i++){
// ImageView img = new ImageView(null);
// img.setImageURI(Uri.parse(items.get(i)));
// linear.addView(img);
}
}
}
}
----------------
로그캣
12-18 11:42:45.117: E/ImageLoader(15211): null
12-18 11:42:45.117: E/ImageLoader(15211): java.lang.OutOfMemoryError
12-18 11:42:45.117: E/ImageLoader(15211): at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
12-18 11:42:45.117: E/ImageLoader(15211): at android.graphics.BitmapFactory.decodeStreamInternal(BitmapFactory.java:703)
12-18 11:42:45.117: E/ImageLoader(15211): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:679)
12-18 11:42:45.117: E/ImageLoader(15211): at com.nostra13.universalimageloader.core.ImageDecoder.decode(ImageDecoder.java:83)
12-18 11:42:45.117: E/ImageLoader(15211): at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.decodeWithOOMHandling(LoadAndDisplayImageTask.java:187)
12-18 11:42:45.117: E/ImageLoader(15211): at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.decodeImage(LoadAndDisplayImageTask.java:170)
12-18 11:42:45.117: E/ImageLoader(15211): at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.tryLoadBitmap(LoadAndDisplayImageTask.java:126)
12-18 11:42:45.117: E/ImageLoader(15211): at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.run(LoadAndDisplayImageTask.java:72)
12-18 11:42:45.117: E/ImageLoader(15211): at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
12-18 11:42:45.117: E/ImageLoader(15211): at java.util.concurrent.FutureTask.run(FutureTask.java:237)
12-18 11:42:45.117: E/ImageLoader(15211): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
12-18 11:42:45.117: E/ImageLoader(15211): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
12-18 11:42:45.117: E/ImageLoader(15211): at java.lang.Thread.run(Thread.java:841)
------------------
이미지 선택을 안하고 바로 눌러도 메모리 오류가 나요. 왜이런걸까여 하 ㅠㅜ
메모리가 직접적인 문제가 아니고 제가 뭐 구현을 잘못한건가요? 이래저래 정신이 없어서 ㅠㅠ 코드가 눈에 잘 들어오지도 않네요 ㅠㅠ