android parcel空指针,android - intent.hasExtra(“ meta”)抛出错误的可包裹异常 - 堆栈内存溢出...
嗨,在我的应用中,我在这一行代码中看到了一个异常intent.hasExtra("meta")这是我的例外由android.os.BadParcelableException引起android.os.Parcel.readParcelableCreator(Parcel.java:2436)android.os.Parcel.readParcelable(Parcel.java:2358)andr
嗨,在我的应用中,我在这一行代码中看到了一个异常
intent.hasExtra("meta")
这是我的例外
由android.os.BadParcelableException引起
android.os.Parcel.readParcelableCreator(Parcel.java:2436)
android.os.Parcel.readParcelable(Parcel.java:2358)
android.os.Parcel.readValue(Parcel.java:2264)
android.os.Parcel.readArrayMapInternal(Parcel.java:2614)
android.os.BaseBundle.unparcel(BaseBundle.java:221)
android.os.BaseBundle.containsKey(BaseBundle.java:269)
android.content.Intent.hasExtra(Intent.java:6002)
无法启动活动ComponentInfo {xxx.Activity}:> android.os.BadParcelableException:可拆分协议要求在类Meta上使用一个名为CREATOR的?Parcelable.Creator对象
我不明白这是怎么发生的,我只是在意图附加中要求存在某个键,但是它引发了异常。
对于测试,如何发生这种情况? 我创建了一个测试应用程序,并创建了一个可打包对象,并检查了意图中的元数据,但我的应用程序可以正常工作并且不会引发异常。
//test case
Intent intent=new Intent();
intent.putExtra("META",new A());
Log.d(TAG, "onCreate:
intent.hasExtra(\"META\")="+intent.hasExtra("META"));
//this log work without exception so why i get exception in my original app?
static class A implements Parcelable{
String d="0dsfa";
int a=10;
public A(){
}
// the order of reading and write parcelable is wrong
// but I want to see that's cause of exception, which my test shows
// that's not my problem
protected A(Parcel in) {
a = in.readInt();
d = in.readString();
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(d);
dest.writeInt(a);
}
private static final Creator CREATOR = new Creator() {
@Override
public A createFromParcel(Parcel in) {
return new A(in);
}
@Override
public A[] newArray(int size) {
return new A[size];
}
};
@Override
public int describeContents() {
return 0;
}
}
更多推荐
所有评论(0)