1

Parcelable オブジェクトで int 変数が正しく読み書きできません。オブジェクトをあるアクティビティから別のアクティビティに渡していますが、渡して読み取ると int 変数が同じではありません。

これが私のコードです。

分解可能なオブジェクト:

class someObject implements Parcelable
int something;
int something2;

//normal constructor
... 

public someObject(Parcel in){
  this.something = in.readInt();
  this.something2 = in.readInt();
}

public void writeToParcel(Parcel dest, int flags){
   dest.writeInt(something);
   dest.writeInt(something2);
}
//creator and other parcel stuff
...

//mutators for int variables
...

activity1でどのように渡しましたか:

//instantiate someObject 
...
Intent intent = new Intent(activity1.this, activity2.class);
intent.putExtras("stuff", someObject);

activity2 に渡されます:

onCreate(Bundle blah){
Bundle b = getIntent.getExtras();
someObject some = b.getParcelable("stuff");

}

コンストラクター内でsomethingとsomething2を出力し、それを渡すアクティビティも出力します。それらは異なる値です。私は何を間違えましたか?

Parcelable オブジェクト クラスに他の String メンバー変数があり、それらが機能しているようです。2つのintだけが正しく機能していません。

4

2 に答える 2

1

ドキュメントから:

final int    readInt()

現在の dataPosition() でパーセルから整数値を読み取ります。

現在の dataPosition() は、2 つの in.readInt() が異なることを意味します。

(ここ: http://developer.android.com/reference/android/os/Parcel.html )

于 2013-06-02T21:26:58.583 に答える