0

現時点では、ArrayList<MyClass>あるアクティビティから別のアクティビティにを渡すのに問題があります。MyClassにParcelableを実装し、アクティビティでインテントを使用しようとしましたが、何か間違ったことをしたようです。アプリのウィンドウで電話をかけるstartActivityintentフリーズし、「!!!失敗したベンダートランザクション!!!」というエラーが表示されます。私はここと他のいくつかの場所で、トランザクションのサイズがエラーを引き起こす可能性があることを読みました。MyClassは1つの画像を保持します。現時点では、各要素に1つのビットマップを持つ5つの要素を保持するstartActivityと呼ばれます。ArrayListすべての画像を合わせたサイズは70kb未満です。

これが私の実際のコードです:

public class MyClass implements Parcelable {

public enum Type {
    VIDEO, AUDIO
}

private int id;
private String name;
private String url;
private double longitude;
private double latitude;
private double gpsDistance;
private String description;
private String thumb;
private Bitmap thumbpic;
private Type type;

public MyClass() {
    this.gpsDistance = 0;
}

public MyClass(Parcel in) {
    readFromParcel(in);
}

/* Setter & Getter */


public void writeToParcel(Parcel dest, int flags) {
    dest.writeInt(id);
    dest.writeString(name);
    dest.writeString(url);
    dest.writeDouble(longitude);
    dest.writeDouble(latitude);
    dest.writeDouble(gpsDistance);
    dest.writeString(description);
    dest.writeString(thumb);
    dest.writeParcelable(thumbpic, flags);
    dest.writeString((type == null) ? "" : type.name());

}



private void readFromParcel(Parcel in) {
    this.id = in.readInt();
    this.name = in.readString();
    this.url = in.readString();
    this.longitude = in.readDouble();
    this.latitude = in.readDouble();
    this.gpsDistance = in.readDouble();
    this.description = in.readString();
    this.thumb = in.readString();
    this.thumbpic = (Bitmap) in.readParcelable(getClass().getClassLoader());
    try {
        type = Type.valueOf(in.readString());
    } catch (IllegalArgumentException x) {
        type = null;
    }
}

public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
    public MyClass createFromParcel(Parcel in) {
        return new MyClass(in);
    }

    public MyClass[] newArray(int size) {
        return new MyClass[size];
    }
};
}

2番目のアクティビティ( )MainActivityを開始するアクティビティ()からのいくつかのコードスニペットListActivity

ArrayList<Content> contentElements  = new ArrayList<Content>();

Intent intent = new Intent(MainActivity.this,ListActivity.class);

intent.putParcelableArrayListExtra("content", contentElements);

での取り扱いListActivity

Intent i = getIntent();
contentElements= i.getParcelableArrayListExtra("content");

誰かがこの問題の原因を知っていて、解決策または代替アプローチを持っていますか?

どうもありがとう!

4

0 に答える 0