Parcelable android中的空指针异常

时间:2014-12-30 09:37:21

标签: android parcelable

我想将活动中的数组对象列表发送到片段,这样我就可以创建parcelable类,传递数据并且一切正常,但是当我按下home按钮时,它会在writeToParcel方法中抛出NPE。请给我一些建议

这是我的可分类

public class SimilarAppsParcel implements Parcelable {

List<SimilarAppsBean> similarAppsBeanList = null;
SimilarAppsBean similarAppsBean = null;

public SimilarAppsParcel(List<SimilarAppsBean> similarAppsBeanList) {
    super();
    this.similarAppsBeanList = similarAppsBeanList;
}

public List<SimilarAppsBean> getParcelList() {
    return similarAppsBeanList;
}

private SimilarAppsParcel(Parcel in) {

    similarAppsBean = new SimilarAppsBean();

    similarAppsBean.setRating(in.readFloat());
    similarAppsBean.setPrice(in.readString());
    similarAppsBean.setTitle(in.readString());

    similarAppsBeanList.add(similarAppsBean);

}

@Override
public int describeContents() {
    return 0;
}

@Override
public void writeToParcel(Parcel parcel, int flags) {

    parcel.writeFloat(similarAppsBean.getRating());
    parcel.writeString(similarAppsBean.getPrice());
    parcel.writeString(similarAppsBean.getTitle());

    similarAppsBeanList.add(similarAppsBean);
}

public static final Parcelable.Creator<SimilarAppsParcel> CREATOR =
        new Parcelable.Creator<SimilarAppsParcel>() {
            public SimilarAppsParcel createFromParcel(Parcel in) {
                return new SimilarAppsParcel(in);
            }

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

}

以下是我如何在活动中制作包裹的代码,

  private void makeSimilarAppsTabParcel(List<SimilarAppsBean> list) {

    // send the list of SimilarAppsBean to SimilarAppsParcel class to create the parcel
    SimilarAppsParcel similarAppsParcel=new SimilarAppsParcel(list);
    bundle_SimilarApps=new Bundle();
    bundle_SimilarApps.putParcelable("SimilarApps",similarAppsParcel);
}

以下是我在frarment中收到包裹的代码,

   Bundle bundle=this.getArguments();
   SimilarAppsParcel similarAppsParcel=bundle.getParcelable("SimilarApps");
   List<SimilarAppsBean> list=similarAppsParcel.getParcelList();

这是我的Logcat,

 java.lang.NullPointerException
        at appstore.com.parcelable.SimilarAppsParcel.writeToParcel(SimilarAppsParcel.java:50)
        at android.os.Parcel.writeParcelable(Parcel.java:1254)
        at android.os.Parcel.writeValue(Parcel.java:1173)
        at android.os.Parcel.writeMapInternal(Parcel.java:591)
        at android.os.Bundle.writeToParcel(Bundle.java:1619)
        at android.os.Parcel.writeBundle(Parcel.java:605)
        at android.support.v4.app.FragmentState.writeToParcel(Fragment.java:136)
        at android.os.Parcel.writeTypedArray(Parcel.java:1102)
        at android.support.v4.app.FragmentManagerState.writeToParcel(FragmentManager.java:381)
        at android.os.Parcel.writeParcelable(Parcel.java:1254)
        at android.os.Parcel.writeValue(Parcel.java:1173)
        at android.os.Parcel.writeMapInternal(Parcel.java:591)
        at android.os.Bundle.writeToParcel(Bundle.java:1619)
        at android.os.Parcel.writeBundle(Parcel.java:605)
        at android.app.ActivityManagerProxy.activityStopped(ActivityManagerNative.java:2269)
        at android.app.ActivityThread$StopInfo.run(ActivityThread.java:3214)
        at android.os.Handler.handleCallback(Handler.java:725)
        at android.os.Handler.dispatchMessage(Handler.java:92)
        at android.os.Looper.loop(Looper.java:153)
        at android.app.ActivityThread.main(ActivityThread.java:5297)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:511)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
        at dalvik.system.NativeStart.main(Native Method)

0 个答案:

没有答案