2016-08-07 6 views
0

私はインテントを使って定義したオブジェクトの配列を渡しています。しかし、ターゲットアクティビティで変数を初期化しようとすると、ClassCastExceptionが返されます(API v 19を使用している場合のみ)。android ClassCastException(API 19のみ)

Process: com.example.j.airportmeet, PID: 26402 
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.j.airportmeet/com.example.j.airportmeet.chat.ChatActivity}: java.lang.ClassCastException: java.lang.Object[] cannot be cast to com.example.j.airportmeet.objects.User[] 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 
     at android.app.ActivityThread.access$800(ActivityThread.java:135) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:136) 
     at android.app.ActivityThread.main(ActivityThread.java:5017) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:515) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
     at dalvik.system.NativeStart.main(Native Method) 
    Caused by: java.lang.ClassCastException: java.lang.Object[] cannot be cast to com.example.j.airportmeet.objects.User[] 
     at com.example.j.airportmeet.chat.ChatActivity.onCreate(ChatActivity.java:111) 
     at android.app.Activity.performCreate(Activity.java:5231) 
     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)  
     at android.app.ActivityThread.access$800(ActivityThread.java:135)  
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)  
     at android.os.Handler.dispatchMessage(Handler.java:102)  
     at android.os.Looper.loop(Looper.java:136)  
     at android.app.ActivityThread.main(ActivityThread.java:5017)  
     at java.lang.reflect.Method.invokeNative(Native Method)  
     at java.lang.reflect.Method.invoke(Method.java:515)  
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)  
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)  
     at dalvik.system.NativeStart.main(Native Method) 
+0

あなたはクラスが配列にすることができると思いますか?代わりに、私はまだエラーが発生するこのhttp://stackoverflow.com/questions/4429036/passing-string-array-between-android-activities –

答えて

0

このような何かを、

//To pass: 
intent.putExtra("MyClass", obj); 

// To retrieve object in second Activity 
getIntent().getSerializableExtra("MyClass"); 

Bundle extras = getIntent().getExtras(); 
sessionID = (User[]) extras.get("sessionID"); 

意図:

Intent i = new Intent(mContext, ChatActivity.class); 
User[] userIDs = {MainScreen.CURRENT_USER, match}; 
i.putExtra("sessionID", userIDs); 
mContext.startActivity(i); 

スタックトレースこれは私のターゲットアクティビティののonCreateに含まれているものです別の例

List<Bird> birds = birdModel.getBird(); 
Intent intent = new Intent(Current.this, Transfer.class); 
Bundle bundle = new Bundle(); 
bundle.putParcelableArrayList("Birds", birds); 
intent.putExtras(bundle); 
startActivity(intent); 

// second activity 
List<Bird> challenge = this.getIntent().getExtras().getParcelableArrayList("Birds"); 
+0

のようにそれを行います実行時: sessionID =(User [])getIntent()。getSerializableExtra( "sessionID"); – SpecialSnowflake

+0

私の別の例を試してみてください...私は答えを更新しました – Dnyanesh

+0

これはどちらもうまくいかず、私はクラス内でパーセルブルを拡張する必要があります.. – SpecialSnowflake

関連する問題