我在Intent中解析Parcelable时遇到问题。
我使用
创建parcelableIntent data = new Intent();
data.putExtra(ShoppingListAdapter.parcelName, la);
setResult(Activity.RESULT_OK, data);
我在onActivityResult中收到它:
Parcelable myData = data.getParcelableExtra(ShoppingListAdapter.parcelName);
然后使用:
将其传递给另一个ActivityIntent myIntent = new Intent(this,Class.class);
myIntent.putExtra("myData", myData);
startActivityForResult(myIntent, RESULT);
我的Parcelable还有另一个Parcelable,我在其中写下并阅读了uisng:
list = in.readParcelable(null);
我尝试使用不同的类加载器,从ClassLoader.getSystemLoader()到MyClass.class.getClassLoader(),但我仍然遇到运行时异常:
06-12 21:13:04.940: ERROR/AndroidRuntime(29962): Caused by: android.os.BadParcelableException: ClassNotFoundException when unmarshalling:
我的包裹在此之前是否已损坏,或者我读错了?
亚历
答案 0 :(得分:1)
我也有这个问题,这是一个愚蠢的事情。 writeToParcel和readToParcel上方法的顺序和数量应该相同且具有相同的变量。
我的意思是:
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(title);
dest.writeParcelable((Parcelable)this.getLocation(), flags);
dest.writeString(value);
}
的顺序必须与:
相同private void readFromParcel(Parcel in){
this.setTitle(in.readString());
this.setLocation((Location)in.readParcelable(android.location.Location.class.getClassLoader()));
this.setValue(in.readString());
}
答案 1 :(得分:0)
正如所指出的那样,这是一种不正确的使用方法。因此,尽管我还没有解决它,但有一种更好的方法可以做同样的事情。所以考虑一下
How to declare global variables in Android?
虽然如果有人对原始问题的答案有任何想法,请发帖。可能发生在别人的其他地方。
亚历
答案 2 :(得分:0)