package com.intent;
import java.util.ArrayList;
import android.app.Activity; import android.content.Intent; import android.os.Bundle;
public class IntentTest extends Activity {
/** Called when the activity is first created. */
private ArrayList<AddressBookData> list;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
this.list = new ArrayList<AddressBookData>();
list.add(new AddressBookData("name1", "number1"));
Intent i = new Intent(this, IntentTest2.class);
i.putParcelableArrayListExtra("postParameters", this.list);
startActivity(i);
}
}
package com.intent;
import java.util.ArrayList;
import android.app.Activity; import android.os.Bundle; import android.util.Log;
public class IntentTest2 extends Activity {
/** Called when the activity is first created. */
private ArrayList<AddressBookData> list2 = new ArrayList<AddressBookData>();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.copymain);
list2 = getIntent().getParcelableArrayListExtra("postParameters");
for (int i = 0; i < list2.size(); i++) {
Log.i("DEBUG", "list2 = " + list2.get(i));
}
}
}
package com.intent;
import android.os.Bundle; import android.os.Parcel; import android.os.Parcelable;
public class AddressBookData implements Parcelable {
private String name;
private String number;
public AddressBookData() {
}
public AddressBookData(String name, String number) {
this.name = name;
this.number = number;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getNumber() {
return number;
}
public int describeContents() {
// TODO Auto-generated method stub
return 0;
}
public void writeToParcel(Parcel dest, int flags) {
// TODO Auto-generated method stub
// dest.writeString(name);
// dest.writeString(number);
Bundle objectBundle = new Bundle();
objectBundle.putString("name", this.name);
objectBundle.putString("number", this.number);
dest.writeBundle(objectBundle);
}
public AddressBookData(Parcel src) {
// this.name = src.readString();
// this.number = src.readString();
Bundle objectBundle = src.readBundle();
this.name = objectBundle.getString("name");
this.number = objectBundle.getString("number");
}
public final Parcelable.Creator<AddressBookData> CREATOR = new Parcelable.Creator<AddressBookData>() {
public AddressBookData createFromParcel(Parcel source) {
// TODO Auto-generated method stub
return new AddressBookData(source);
}
public AddressBookData[] newArray(int size) {
// TODO Auto-generated method stub
return new AddressBookData[size];
}
};
}
에레메세지
->
07-05 04:51:49.618: ERROR/AndroidRuntime(430): Uncaught handler: thread main exiting due to uncaught exception
07-05 04:51:49.638: ERROR/AndroidRuntime(430): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.intent/com.intent.IntentTest2}: java.lang.NullPointerException
07-05 04:51:49.638: ERROR/AndroidRuntime(430): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)
07-05 04:51:49.638: ERROR/AndroidRuntime(430): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
07-05 04:51:49.638: ERROR/AndroidRuntime(430): at android.app.ActivityThread.access$2200(ActivityThread.java:119)
07-05 04:51:49.638: ERROR/AndroidRuntime(430): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
07-05 04:51:49.638: ERROR/AndroidRuntime(430): at android.os.Handler.dispatchMessage(Handler.java:99)
07-05 04:51:49.638: ERROR/AndroidRuntime(430): at android.os.Looper.loop(Looper.java:123)
07-05 04:51:49.638: ERROR/AndroidRuntime(430): at android.app.ActivityThread.main(ActivityThread.java:4363)
07-05 04:51:49.638: ERROR/AndroidRuntime(430): at java.lang.reflect.Method.invokeNative(Native Method)
07-05 04:51:49.638: ERROR/AndroidRuntime(430): at java.lang.reflect.Method.invoke(Method.java:521)
07-05 04:51:49.638: ERROR/AndroidRuntime(430): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
07-05 04:51:49.638: ERROR/AndroidRuntime(430): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
07-05 04:51:49.638: ERROR/AndroidRuntime(430): at dalvik.system.NativeStart.main(Native Method)
07-05 04:51:49.638: ERROR/AndroidRuntime(430): Caused by: java.lang.NullPointerException
07-05 04:51:49.638: ERROR/AndroidRuntime(430): at java.lang.reflect.Field.getField(Native Method)
07-05 04:51:49.638: ERROR/AndroidRuntime(430): at java.lang.reflect.Field.get(Field.java:247)
07-05 04:51:49.638: ERROR/AndroidRuntime(430): at android.os.Parcel.readParcelable(Parcel.java:1811)
07-05 04:51:49.638: ERROR/AndroidRuntime(430): at android.os.Parcel.readValue(Parcel.java:1713)
07-05 04:51:49.638: ERROR/AndroidRuntime(430): at android.os.Parcel.readListInternal(Parcel.java:1956)
07-05 04:51:49.638: ERROR/AndroidRuntime(430): at android.os.Parcel.readArrayList(Parcel.java:1403)
07-05 04:51:49.638: ERROR/AndroidRuntime(430): at android.os.Parcel.readValue(Parcel.java:1734)
07-05 04:51:49.638: ERROR/AndroidRuntime(430): at android.os.Parcel.readMapInternal(Parcel.java:1947)
07-05 04:51:49.638: ERROR/AndroidRuntime(430): at android.os.Bundle.unparcel(Bundle.java:169)
07-05 04:51:49.638: ERROR/AndroidRuntime(430): at android.os.Bundle.getParcelableArrayList(Bundle.java:1081)
07-05 04:51:49.638: ERROR/AndroidRuntime(430): at android.content.Intent.getParcelableArrayListExtra(Intent.java:3297)
07-05 04:51:49.638: ERROR/AndroidRuntime(430): at com.intent.IntentTest2.onCreate(IntentTest2.java:21)
07-05 04:51:49.638: ERROR/AndroidRuntime(430): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
07-05 04:51:49.638: ERROR/AndroidRuntime(430): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
07-05 04:51:49.638: ERROR/AndroidRuntime(430): ... 11 more
왜 에러가 나는지 모르겠습니다. 일반적으로 Intent 로 데이터 넘기는 경우가 문제가 없는데
ArrayList<T> 타입으로 넘기는 경우 실제로 받는 액티비티에서 해당 리스트를 읽고자 할 경우 위의 처럼 에러가 뜹니다.
아시는 분 ~ 알려주세요



