嗨,在我的应用程序中,我看到这行代码中的异常

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 :> android.os.BadParcelableException:Parcelable协议需要在类Meta上调用名为CREATOR的?Parcelable.Creator对象

我无法理解这是怎么发生的我只是要求在一个意图附加项中存在一个键,但它会抛出异常 .

对于测试,这种情况如何发生?我创建一个测试应用程序并创建一个parcelable对象并检查meta意图,但我的应用程序正常工作,并没有抛出异常 .

//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<A> CREATOR = new Creator<A>() {
        @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;
    }
}