Wdrożenie Parcelable nad AIDL
Pierwszy krok: - Utwórz inny plik .aidl, który będzie używany do zdefiniowania klasy Student (Parcelable klasy).
(Student.aidl)
package com.aidl;
parcelable Student;
piszemy to, ponieważ helpl może wykryć klasę studentów.
Krok drugi: - musisz teraz zdefiniować klasę java ze studentem name i implementować interfejs parcable w tej klasie. Interfejs parcable ma dwie abstrakcyjne metody, które musisz zastosować w klasie studenta.
import android.os.Parcel;
import android.os.Parcelable;
public class Student implements Parcelable {
public String name;
public String father_name;
public Student(Parcel source)
{
name = source.readString();
father_name = source.readString();
}
public Student()
{}
public void setName(String name)
{
this.name = name;
}
public void setFatherName(String father_name)
{
this.father_name = father_name;
}
// metody parcable interfejsu
@Override
public int describeContents() {
// TODO Auto-generated method stub
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
// TODO Auto-generated method stub
dest.writeString(name);
dest.writeString(father_name);
}
z każdej klasy implementujący Parcelable trzeba zapewnić pole twórcy. Typem twórcy musi być Parcelable.Creator. Tutaj zamiast T wpisujemy nazwę naszej klasy np. Student. TWÓRCA jest używany podczas UnMarshallingu obiektu.
Posiada dwie metody -
1-T createFromParcel(Parcel parcel) :This method is called when UnMarshalling happen
during receiving the data. Keep care that we receive the data member in same sequence
as we write in writeToPacel(). Here we create a constructor in which we demarshalling
the data.
2-NewArray(int size) : Here we just create an array of given size and return.
public static final Parcelable.Creator<Student> CREATOR = new Parcelable.Creator<Student>() {
@Override
public Student createFromParcel(Parcel source) {
// TODO Auto-generated method stub
return new Student(source);
}
@Override
public Student[] newArray(int size) {
// TODO Auto-generated method stub
return new Student[size];
}
};
o więcej informacji: Check Here
Czy go rozwiązać? –