我的问题是,当Activity运行到savedInstanceState时,会导致以下错误:
由java.lang.RuntimeException引起 包裹android.os.Parcel@2c89385:在偏移量132处解组未知类型代码7929970
在我的项目中,只有一个类实现了Parcelable来在片段之间传递数据。它包含一个用于存储数据的HashMap。
public class SimiData implements Parcelable {
public static final Creator<SimiData> CREATOR = new Creator<SimiData>() {
@Override
public SimiData createFromParcel(Parcel in) {
return new SimiData(in);
}
@Override
public SimiData[] newArray(int size) {
return new SimiData[size];
}
};
protected HashMap<String, Object> mData;
public SimiData(HashMap<String, Object> data) {
mData = data;
}
protected SimiData(Parcel in) {
try {
mData = in.readHashMap(HashMap.class.getClassLoader());
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
try {
if (null == mData) {
return;
}
dest.writeValue(mData);
} catch (Exception e) {
Log.e("SimiData", "write exception " + e.getMessage());
}
}
public HashMap<String, Object> getData() {
return mData;
}
}
我猜是由Parcel的读/写值引起的问题。我尝试了很多方法,但没有任何方法可以帮助我。
有人可以给我一个方向吗?