1

私は次のようなクラスを持っています:

Class persona implements Serializable {

    int age;
    String name;

}

そして、私の最初のアクティビティは配列を埋めます:

persona[] p;

次に、別のアクティビティでこの情報が必要です。どうすれば送れますか?

私は作ろうとします:

Bundle b = new Bundle();
b.putSerializable("persona", p);

しかし、私はできません。

4

2 に答える 2

8

私の知る限り、シリアル化可能な配列をバンドルに入れる方法はありません。ここでは、パーセルを使用するソリューションを使用します

クラスをこれに変更します

import android.os.Parcel;
import android.os.Parcelable;

public class persona implements Parcelable {

    int age;
    String name;

    public static final Parcelable.Creator<persona> CREATOR = new Creator<persona>() {

        @Override
        public persona[] newArray(int size) {
            // TODO Auto-generated method stub
            return new persona[size];
        }

        @Override
        public persona createFromParcel(Parcel source) {
            // TODO Auto-generated method stub
            return new persona(source);
        }
    };

    public persona(Parcel in) {
        super();
        age = in.readInt();
        name = in.readString();
    }

    public persona() {
        super();
        // TODO Auto-generated constructor stub
    }

    @Override
    public int describeContents() {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeInt(age);
        dest.writeString(name);

    }
}

次に、このように配列を送信できます

Bundle b = new Bundle();

b.putParcelableArray("persona", p);

Androidでは、Serializableの代わりにParcelableを使用する方が効率的です

于 2012-12-08T14:50:13.843 に答える
1

クラスを実装する必要がありますParcelable。その後、-メソッドを使用してバンドルで送信できますBundle.putParcelableArray()

また、一般的なアドバイス: クラス名は常に大文字で始める必要があります

于 2012-12-08T14:50:39.863 に答える