마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

인텐트로 비트맵 배열 넘기는방법

0 추천

안녕하세요 안드로이드펍 가족님들..

인텐트로  비트맵 배열을 넘길려고 하는데요.

 

구글링해서 해봤는데도 잘안되되는데요

http://stackoverflow.com/questions/15102057/how-to-pass-bitmap-array-between-2-activies

보내는부분분

Intent intent =new Intent(this,  aaaa.class);

 

intent.putExtra("bitmaps", mBitmap);

startActivity(intent);

 

//받는부분

Intent i = getIntent();

Bitmap [] bitmaps = (Bitmap[]) i.getParcelableArrayExtra("bitmaps");

 

아래와같은 에러가 나타납니다.

03-27 02:44:00.185: E/AndroidRuntime(10786): FATAL EXCEPTION: main

03-27 02:44:00.185: E/AndroidRuntime(10786): Process: kr.co.exparts, PID: 10786

03-27 02:44:00.185: E/AndroidRuntime(10786): java.lang.RuntimeException: Unable to start activity ComponentInfo{kr.co.exparts/kr.co.exparts.acts.EXGalleryActivity}: java.lang.ClassCastException: android.os.Parcelable[] cannot be cast to android.graphics.Bitmap[]

03-27 02:44:00.185: E/AndroidRuntime(10786): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2282)

03-27 02:44:00.185: E/AndroidRuntime(10786): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2340)

03-27 02:44:00.185: E/AndroidRuntime(10786): at android.app.ActivityThread.access$800(ActivityThread.java:157)

03-27 02:44:00.185: E/AndroidRuntime(10786): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1247)

03-27 02:44:00.185: E/AndroidRuntime(10786): at android.os.Handler.dispatchMessage(Handler.java:102)

03-27 02:44:00.185: E/AndroidRuntime(10786): at android.os.Looper.loop(Looper.java:157)

03-27 02:44:00.185: E/AndroidRuntime(10786): at android.app.ActivityThread.main(ActivityThread.java:5293)

03-27 02:44:00.185: E/AndroidRuntime(10786): at java.lang.reflect.Method.invokeNative(Native Method)

03-27 02:44:00.185: E/AndroidRuntime(10786): at java.lang.reflect.Method.invoke(Method.java:515)

03-27 02:44:00.185: E/AndroidRuntime(10786): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)

03-27 02:44:00.185: E/AndroidRuntime(10786): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)

03-27 02:44:00.185: E/AndroidRuntime(10786): at dalvik.system.NativeStart.main(Native Method)

03-27 02:44:00.185: E/AndroidRuntime(10786): Caused by: java.lang.ClassCastException: android.os.Parcelable[] cannot be cast to android.graphics.Bitmap[]

03-27 02:44:00.185: E/AndroidRuntime(10786): at kr.co.exparts.acts.EXGalleryActivity.onCreate(EXGalleryActivity.java:21)

03-27 02:44:00.185: E/AndroidRuntime(10786): at android.app.Activity.performCreate(Activity.java:5389)

03-27 02:44:00.185: E/AndroidRuntime(10786): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)

03-27 02:44:00.185: E/AndroidRuntime(10786): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2246)

03-27 02:44:00.185: E/AndroidRuntime(10786): ... 11 more

 

흠바바 1 (4,000 포인트) 님이 2014년 3월 27일 질문

1개의 답변

+2 추천
 
채택된 답변
일단 아래 소스와 같이 코딩을 해 주시면 될듯 하긴 합니다만...

만약에 비트맵이미지가 클 경우에는 전달이 안되는 경우가 많습니다.

조그만 비트맵만 전달하실게 아니시라면 두 액티비티간에 사용할수 있는 공동저장소를 만드셔서

전달하시는게 좋을것 같습니다.

그럼 수고 하세요.

 

//Convert to byte array
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();

Intent in1 = new Intent(this, Activity2.class);
in1.putExtra("image",byteArray);

Then in Activity 2:

byte[] byteArray = getIntent().getByteArrayExtra("image");
Bitmap bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
철수야안녕 (6,120 포인트) 님이 2014년 3월 27일 답변
흠바바 1님이 2014년 3월 27일 채택됨
ㅜㅜ 다행이 그게되는거 같은데

인텐트로 넘길수 있는용량이 초과되었다고 합니다 ㅜㅜ

다른방법이 없나요
...