2011-10-28 52 views
4

,同時使一個列表對象可解析(我想在閱讀對象發生錯誤)我得到錯誤 這裏是我的代碼使類parcelable其中包含自定義對象列表

public class TestSample implements Parcelable { 
    int intValue; 
    String stirngValue; 
    private List<DocumentControlPolicy> cpls; 
    @Override 
    public int describeContents() { 
     // TODO Auto-generated method stub 
     return 0; 
    } 

    @Override 
    public void writeToParcel(Parcel dest, int flags) { 
     dest.writeInt(intValue); 
     dest.writeString(stirngValue); 
     dest.writeTypedList(cpls); 
     dest.writeList(cpls); 
    } 
    public static final Parcelable.Creator<TestSample> CREATOR 
        = new Parcelable.Creator<TestSample>() { 
      public TestSample createFromParcel(Parcel in) { 
       return new TestSample(in); 
      } 

     public TestSample[] newArray(int size) { 
      return new TestSample[size]; 
     } 
    }; 

    private TestSample(Parcel in) { 
     intValue = in.readInt(); 
     stirngValue=in.readString(); 
     in.readTypedList(cpls,DocumentControlPolicy.CREATOR); 
    } 
    public TestSample(int intValue, String stirngValue) { 
     super(); 
     this.intValue = intValue; 
     this.stirngValue = stirngValue; 
    } 

} 

這裏是代碼從一個活動的數據發送到其他

Intent nextpage = new Intent(this, Secondpage.class); 

     TestSample tst= new TestSample(1,"Tood"); 
     Log.i("myTag", tst.toString()); 
     nextpage.putExtra("ONE", tst); 
     startActivity(nextpage); 

這裏是代碼來獲取數據

TestSample tst = getIntent().getParcelableExtra("ONE"); 
     if(tst != null){ 
      Log.i("myTag", "second "+tst.toString()); 
     }else{ 
      Log.i("myTag","second tst is null"); 
     } 

但我得到下面的異常

10-28 19:30:58.281: ERROR/AndroidRuntime(3371): FATAL EXCEPTION: main 
10-28 19:30:58.281: ERROR/AndroidRuntime(3371): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.app.parceblecheck/com.app.parceblecheck.Secondpage}: java.lang.NullPointerException 
10-28 19:30:58.281: ERROR/AndroidRuntime(3371):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 
10-28 19:30:58.281: ERROR/AndroidRuntime(3371):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
10-28 19:30:58.281: ERROR/AndroidRuntime(3371):  at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
10-28 19:30:58.281: ERROR/AndroidRuntime(3371):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
10-28 19:30:58.281: ERROR/AndroidRuntime(3371):  at android.os.Handler.dispatchMessage(Handler.java:99) 
10-28 19:30:58.281: ERROR/AndroidRuntime(3371):  at android.os.Looper.loop(Looper.java:123) 
10-28 19:30:58.281: ERROR/AndroidRuntime(3371):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
10-28 19:30:58.281: ERROR/AndroidRuntime(3371):  at java.lang.reflect.Method.invokeNative(Native Method) 
10-28 19:30:58.281: ERROR/AndroidRuntime(3371):  at java.lang.reflect.Method.invoke(Method.java:521) 
10-28 19:30:58.281: ERROR/AndroidRuntime(3371):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
10-28 19:30:58.281: ERROR/AndroidRuntime(3371):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
10-28 19:30:58.281: ERROR/AndroidRuntime(3371):  at dalvik.system.NativeStart.main(Native Method) 
10-28 19:30:58.281: ERROR/AndroidRuntime(3371): Caused by: java.lang.NullPointerException 
10-28 19:30:58.281: ERROR/AndroidRuntime(3371):  at android.os.Parcel.readTypedList(Parcel.java:1555) 
10-28 19:30:58.281: ERROR/AndroidRuntime(3371):  at com.zenprise.android.policy.TestSample.<init>(TestSample.java:41) 
10-28 19:30:58.281: ERROR/AndroidRuntime(3371):  at com.zenprise.android.policy.TestSample.<init>(TestSample.java:38) 
10-28 19:30:58.281: ERROR/AndroidRuntime(3371):  at com.zenprise.android.policy.TestSample$1.createFromParcel(TestSample.java:30) 
10-28 19:30:58.281: ERROR/AndroidRuntime(3371):  at com.zenprise.android.policy.TestSample$1.createFromParcel(TestSample.java:1) 
10-28 19:30:58.281: ERROR/AndroidRuntime(3371):  at android.os.Parcel.readParcelable(Parcel.java:1906) 
10-28 19:30:58.281: ERROR/AndroidRuntime(3371):  at android.os.Parcel.readValue(Parcel.java:1771) 
10-28 19:30:58.281: ERROR/AndroidRuntime(3371):  at android.os.Parcel.readMapInternal(Parcel.java:2008) 
10-28 19:30:58.281: ERROR/AndroidRuntime(3371):  at android.os.Bundle.unparcel(Bundle.java:208) 
10-28 19:30:58.281: ERROR/AndroidRuntime(3371):  at android.os.Bundle.getParcelable(Bundle.java:1100) 
10-28 19:30:58.281: ERROR/AndroidRuntime(3371):  at android.content.Intent.getParcelableExtra(Intent.java:3396) 
10-28 19:30:58.281: ERROR/AndroidRuntime(3371):  at com.app.parceblecheck.Secondpage.onCreate(Secondpage.java:27) 
10-28 19:30:58.281: ERROR/AndroidRuntime(3371):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
10-28 19:30:58.281: ERROR/AndroidRuntime(3371):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 
10-28 19:30:58.281: ERROR/AndroidRuntime(3371):  ... 11 more 

回答

10

你使用它
在你TestSample(Parcel in)構造,使用的是cpls沒有宣佈之前,您尚未創建對象cpls ..
你應該做這樣的

+0

是否有必要在構造函數中初始化它? –

相關問題