0

インテント全体で区画を解析する際に問題が発生しました。

を使用して区画を作成します

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);

私の区画には別の区画があり、その中に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: 

私の小包はこれより前のどこかで破損していますか、それとも間違って読んでいますか?

アレックス

4

3 に答える 3

2

私もその問題を抱えていました、それはばかげたことです。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());
}
于 2013-05-07T16:14:08.830 に答える
0

Intent.setExtrasClassLoader (java.lang.ClassLoader)は役に立ちますか?

于 2012-08-22T23:13:11.403 に答える
0

指摘されたように、これは間違った使用方法でした。私はそれを解決していませんが、同じことを行うより良い方法があります。代わりにそれを検討してください

Androidでグローバル変数を宣言するには?

誰かが元の質問に対する答えを知っている場合は、投稿してください。他の誰かにどこかで起こる可能性があります。

アレックス

于 2011-06-14T20:16:12.697 に答える