ClassNotFoundException при отмене сортировки Parcelable - PullRequest
0 голосов
/ 13 июня 2011

У меня проблема с анализом Parcelable через Intent.

Я создаю parcelable, используя

Intent data = new Intent();
data.putExtra(ShoppingListAdapter.parcelName, la);
setResult(Activity.RESULT_OK, data);

Я получаю его в onActivityResult:

Parcelable myData = data.getParcelableExtra(ShoppingListAdapter.parcelName);

Затем передаю его в другое действие, используя:

Intent 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: 

Повреждена ли моя посылка где-то до этого или я ее неправильно читаю?

Alex

Ответы [ 3 ]

2 голосов
/ 07 мая 2013

У меня тоже была эта проблема, это глупо. порядок и число методов writeToParcel и readToParcel должны быть одинаковыми и с одинаковыми переменными.заказать как:

private void readFromParcel(Parcel in){

  this.setTitle(in.readString());
  this.setLocation((Location)in.readParcelable(android.location.Location.class.getClassLoader()));
  this.setValue(in.readString());
}
0 голосов
/ 23 августа 2012
0 голосов
/ 15 июня 2011

Как было указано, это был неправильный подход к использованию. Поэтому, хотя я еще не решил, есть лучший способ сделать то же самое. Поэтому рассмотрите это вместо

Как объявить глобальные переменные в Android?

Хотя, если у кого-то есть идеи для ответа на оригинальный вопрос, пожалуйста, напишите. Может случиться где-то еще с кем-то еще.

Alex

...