Android Parcable hat einige einzigartige Eigenschaften. Diese sind im Folgenden aufgeführt:
- Sie müssen Parcel in der gleichen Reihenfolge lesen, in der Sie Daten auf Parcel eingeben.
- Das Paket leert sich nach dem Auslesen des Pakets. Das heißt, wenn Sie 3 Daten auf Ihrer Parzelle haben. Dann wird das Paket nach 3-maligem Lesen leer sein.
Beispiel: Um eine Klasse Parceble zu machen, muss sie Parceble implementieren. Percable hat 2 Methoden:
int describeContents();
void writeToParcel(Parcel var1, int var2);
Angenommen, Sie haben eine Person Klasse und es hat 3 Feld, Vorname, Nachname und Alter. Nach der Implementierung der Schnittstelle "Parceble" wird diese Schnittstelle wie folgt dargestellt:
import android.os.Parcel;
import android.os.Parcelable;
public class Person implements Parcelable{
private String firstName;
private String lastName;
private int age;
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getFirstName() {
return firstName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getLastName() {
return lastName;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel parcel, int i) {
parcel.writeString(firstName);
parcel.writeString(lastName);
parcel.writeInt(age);
}
}
Aquí writeToParcel
Methode werden Daten auf Parcel in einem Auftrag geschrieben/hinzugefügt. Danach müssen wir den folgenden Code zum Lesen der Daten aus dem Paket hinzufügen:
protected Person(Parcel in) {
firstName = in.readString();
lastName = in.readString();
age = in.readInt();
}
public static final Creator<Person> CREATOR = new Creator<Person>() {
@Override
public Person createFromParcel(Parcel in) {
return new Person(in);
}
@Override
public Person[] newArray(int size) {
return new Person[size];
}
};
Hier nimmt die Personenklasse ein Paket und erhält die Daten in derselben Reihenfolge beim Schreiben.
Jetzt bei Vorsatz getExtra
y putExtra
Code ist unten angegeben:
Extra einlegen :
Person person=new Person();
person.setFirstName("First");
person.setLastName("Name");
person.setAge(30);
Intent intent = new Intent(getApplicationContext(), SECOND_ACTIVITY.class);
intent.putExtra()
startActivity(intent);
Extra erhalten:
Person person=getIntent().getParcelableExtra("person");
Die vollständige Personenklasse ist unten angegeben :
import android.os.Parcel;
import android.os.Parcelable;
public class Person implements Parcelable{
private String firstName;
private String lastName;
private int age;
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getFirstName() {
return firstName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getLastName() {
return lastName;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel parcel, int i) {
parcel.writeString(firstName);
parcel.writeString(lastName);
parcel.writeInt(age);
}
protected Person(Parcel in) {
firstName = in.readString();
lastName = in.readString();
age = in.readInt();
}
public static final Creator<Person> CREATOR = new Creator<Person>() {
@Override
public Person createFromParcel(Parcel in) {
return new Person(in);
}
@Override
public Person[] newArray(int size) {
return new Person[size];
}
};
}
Hope this will help you
Thanks :)