我想将活动中的数组对象列表发送到片段,这样我就可以创建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)