ich folgenden parcel bezweckt:Wie ein zweidimensionales parcel Array von parcelables erstellen:
public class CGameCard implements Parcelable {
...
private int mX;
private int mY;
private String mObjectName;
private int mState;
public CGameCard(int aX, int aY, String aObjectName) {
mX = aX;
mY = aY;
mObjectName = aObjectName;
mState = CARD_STATE_NOT_MATCHED;
}
public int getX() {
return mX;
}
public int getY() {
return mY;
}
public String getObjectName(){
return mObjectName;
}
public int getState() {
return mState;
}
...
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(this.mX);
dest.writeInt(this.mY);
dest.writeString(this.mObjectName);
dest.writeInt(this.mState);
}
protected CGameCard(Parcel in) {
this.mX = in.readInt();
this.mY = in.readInt();
this.mObjectName = in.readString();
this.mState = in.readInt();
}
public static final Creator<CGameCard> CREATOR = new Creator<CGameCard>() {
@Override
public CGameCard createFromParcel(Parcel source) {
return new CGameCard(source);
}
@Override
public CGameCard[] newArray(int size) {
return new CGameCard[size];
}
};
}
ich eine zweidimensionale parcel Anordnung dieser Objekte schaffen, um möge es in den gemeinsamen Einstellungen zu speichern für Konfigurationsänderungen. das ist, was durch das Parcel Android Studio Plugin erzeugt wird:
public class GameCardArrArr implements Parcelable {
private CGameCard[][] mArray;
public GameCardArrArr(CGameCard[][] array) {
mArray = array;
}
public CGameCard[][] getArray() {
return mArray;
}
public void setArray(CGameCard[][] mArray) {
this.mArray = mArray;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeParcelable(this.mArray, flags);
}
protected GameCardArrArr(Parcel in) {
this.mArray = in.readParcelable(CGameCard[][].class.getClassLoader());
}
public static final Creator<GameCardArrArr> CREATOR = new Creator<GameCardArrArr>() {
@Override
public GameCardArrArr createFromParcel(Parcel source) {
return new GameCardArrArr(source);
}
@Override
public GameCardArrArr[] newArray(int size) {
return new GameCardArrArr[size];
}
};
}
Was nicht da offensichtlich vom Compiler akzeptiert wird es nicht korrekt.
Die Frage: Was wäre der richtige Weg, um diese Parcelable zu erstellen?
danke im voraus.
als ich versuchte, es zu implementieren, gibt es einen Kompilierungsfehler als readParcelableArray-Methode d akzeptiert nur einen Parameter. Warum gehst du auch hier an den Schöpfer? –
@EmilAdz Entschuldigung. Schlechte Bearbeitung Ich habe ursprünglich 'readTypedArray' verwendet, das zwei benötigt, aber das wurde erst 23 hinzugefügt, also änderte ich es in eine universellere Version. – DeeV
readTypeArray würde auch funktionieren? –