我通常对parcelable没有任何问题,但这次我得到了NPE ......我无法修复它。请帮助我。
当我尝试将parcelable类从片段传递到另一个活动时,NPE仅 。如果我将parcelable类从活动传递到另一个活动或从活动传递到片段,那么工作正常。
这是我的片段代码,child
(parcelable class)在调试时不为null:
if(v == imgChild)
{
Intent i = new Intent(getActivity(), DetailChildActivity.class);
i.putExtra("child", child);
startActivity(i);
Log.d("menu", "children");
}
此处在我的目标onCreate
活动中:
Bundle data = getIntent().getExtras();
if(data != null)
{
child = data.getParcelable("child"); //NPE here
txtName.setText(child.getName());
}
这很奇怪。数据不为null,但parcelable始终为null。
这是我的parcelable(Child
)类:
public final Parcelable.Creator<Child> CREATOR = new Parcelable.Creator<Child>() {
public Child createFromParcel(Parcel in) {
return new Child(in);
}
public Child[] newArray(int size) {
return new Child[size];
}
};
private Child(Parcel in) {
id = in.readInt();
user_id = in.readInt();
name = in.readString();
gender = in.readString();
born_date = in.readString();
born_hour = in.readString();
hospital = in.readString();
result = in.readString();
}
@Override
public int describeContents() {
// TODO Auto-generated method stub
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
// TODO Auto-generated method stub
dest.writeInt(id);
dest.writeInt(user_id);
dest.writeString(name);
dest.writeString(gender);
dest.writeString(born_date);
dest.writeString(born_hour);
dest.writeString(hospital);
dest.writeString(result);
}
这就是log cat
所说的:
预期的com.blabla.child类型的接收器,但是为null
感谢您的时间。
答案 0 :(得分:1)
奇怪。我知道答案,但我不明白为什么。来自FragmentActivity NullPointer in onCreate savedInstanceState Bundle:
public static final Parcelable.Creator
创作者应该处于静态和最终状态,而不仅仅是最终。多数民众赞成。
也许你可以向我解释一下这项工作如何,这就是现在的答案。