2012-02-08 9 views
0

私はその後、ファイルに書き込みます新しい活動に渡すしようとしていますLocaitonArrayListlongArrayを持っています。新しい活動にParcelableArrayListとLongArrayを渡す

Bundle b = new Bundle(); 
Intent i = new Intent(Begin_Run.this, GPSTrackDetails.class); 
Times = convertLong(times); 
b.putParcelableArrayList("Locations", locations); 
b.putLongArray("Times", Times); 
i.putExtra("bundle", b); 
startActivity(i); 

これは、バンドルを使用してIntentに追加する方法です。しかし、私が新しいアクティビティでそれらを印刷しようとすると、nullポインタの例外が発生します。

これは、私が新しいアクティビティでBundleから削除する方法です。

Bundle bundle = getIntent().getExtras(); 
locations = bundle.getParcelableArrayList("Locations"); 
times = bundle.getLongArray("Times"); 

LogCat出力は、あなたが正確に情報を渡していません

FATAL EXCEPTION: main 
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.fyp.run_race/com.fyp.run_race.GPSTrackDetails}: java.lang.NullPointerException 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:123) 
at android.app.ActivityThread.main(ActivityThread.java:4627) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:521) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.NullPointerException 
at com.fyp.run_race.GPSTrackDetails.onCreate(GPSTrackDetails.java:37) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 
... 11 more 

答えて

1

です。インテントの拡張データ(「余分」)は、のバンドルです。あなたがやっていることは、あなたのバンドルをそのバンドルのキー "bundle"の下に置いています。

あなたは本当にあなたが最初のコードの断片で行うように情報を渡したい場合は、しかし

Bundle bundle = getIntent().getExtras().getParcelable("bundle"); 

を経由してそれを取得する必要があります、あなたは可能性が高いだけに直接それを置くことになるでしょう余分な、何かを使用して

Intent i = new Intent(Begin_Run.this, GPSTrackDetails.class); 
Times = convertLong(times); 
i.putParcelableArrayListExtra("Locations", locations); 
i.putExtra("Times", Times); 
startActivity(i); 
+0

ありがとう、問題を完全に解決しました。 = D –