Ich habe eine Liste einer Klasse, die ich gemacht habe, Karte, und ich muss es an eine andere Aktivität durch eine Absicht weitergeben.Verwendung von Parcelable zum Übergeben einer Liste durch eine Absicht Put-Parameter
Ich versuche Parcelable zu implementieren, wie jemand mich vorgeschlagen hat.
Tatsache ist, dass diese Liste Objekte enthält, die Modus von anderen Klassen sind, die die Karte erweitern.
So zum Beispiel habe ich diese Garde-Klasse, die Karte erstreckt, aber wenn ich die App laufen bekomme ich diesen Fehler:
Error:(10, 19) error: constructor Card in class Card cannot be applied to given types; required: Parcel found: no arguments reason: actual and formal argument lists differ in length
Die Card-Klasse ist die folgende:
public class Card implements Parcelable{
private String mName;
protected Card(Parcel in) {
mName = in.readString();
}
public static final Creator<Card> CREATOR = new Creator<Card>() {
@Override
public Card createFromParcel(Parcel in) {
return new Card(in);
}
@Override
public Card[] newArray(int size) {
return new Card[size];
}
};
public String getName(){
return mName;
}
public void setName(String name){
mName = name;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(mName);
}
}
Ich habe implementiert zwei Methoden, die Android Studio mir gesagt hat, hinzuzufügen, und ich lassen Sie sie selbst hinzufügen, sie sind describeContents()
und writeToParcel()
aber wie Sie habe ich in all den anderen (insgesamt 6) Klassen dieses andere Fehler erhalten, die extend
Card
(und im List
Ich brauche enthalten sind, über n Absicht passieren)
die Garde-Klasse (die anderen 5 sind alle gleich)
public class Guard extends Card {
public Guard(){
this.setName("Guard");
}
}
Was denken Sie, ist das Problem ? Wie sollte ich lösen dies und warum?
Dies ist, wie ich die intent
erstellen verwaltet:
Intent intent = new Intent(this, RandomAssignment.class);
intent.putParcelableArrayListExtra("CHARACTERS", (ArrayList<? extends Parcelable>) characters);
startActivity(intent);
und wie es abzurufen:
characters = this.getIntent().getParcelableArrayListExtra("CHARACTERS");
Wo sehen Sie dieser Fehler? Sie brauchen wahrscheinlich einen anderen Konstruktor, der kein Paket als Parameter – fractalwrench
Ich sehe es, wenn ich die App, das Problem ist in der Guard (und die 5 anderen) Klasse .. Ich verstehe nicht, wie sollte Ich mache diesen anderen Konstruktor @fractalwrench – FET