Kullanımı Android Studio ve Kotlin eklentisi, benim eski Java dönüştürmek için kolay bir yol buldum Parcelable
ler ile hiçbir ekstra eklentileri (tüm istediğiniz yepyeni açmak için ise data
bir halinde sınıfı Parcelable
, 4 kod parçalarında atlayın).
Diyelim ki Person
tüm Parcelable
kazan plakası olan bir sınıfınız var :
public class Person implements Parcelable{
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];
}
};
private final String firstName;
private final String lastName;
private final int age;
public Person(String firstName, String lastName, int age) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
}
protected Person(Parcel in) {
firstName = in.readString();
lastName = in.readString();
age = in.readInt();
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(firstName);
dest.writeString(lastName);
dest.writeInt(age);
}
@Override
public int describeContents() {
return 0;
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
public int getAge() {
return age;
}
}
Parcelable
Uygulamayı çıkararak başlayın , çıplak kemikler, düz, eski bir Java nesnesi bırakın (özellikler nihai olmalı ve kurucu tarafından ayarlanmalıdır):
public class Person {
private final String firstName;
private final String lastName;
private final int age;
public Person(String firstName, String lastName, int age) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
public int getAge() {
return age;
}
}
O zaman Code > Convert Java file to Kotlin File
seçeneğin sihrini yapmasına izin verin :
class Person(val firstName: String, val lastName: String, val age: Int)
Bunu bir data
sınıfa dönüştürün :
data class Person(val firstName: String, val lastName: String, val age: Int)
Ve son olarak, bunu Parcelable
tekrar a çevirelim. Sınıf adının üzerine gelin ve Android Studio size seçeneği sunmalıdır Add Parcelable Implementation
. Sonuç şöyle görünmeli:
data class Person(val firstName: String, val lastName: String, val age: Int) : Parcelable {
constructor(parcel: Parcel) : this(
parcel.readString(),
parcel.readString(),
parcel.readInt()
)
override fun writeToParcel(parcel: Parcel, flags: Int) {
parcel.writeString(firstName)
parcel.writeString(lastName)
parcel.writeInt(age)
}
override fun describeContents(): Int {
return 0
}
companion object CREATOR : Parcelable.Creator<Person> {
override fun createFromParcel(parcel: Parcel): Person {
return Person(parcel)
}
override fun newArray(size: Int): Array<Person?> {
return arrayOfNulls(size)
}
}
}
Gördüğünüz gibi, Parcelable
uygulama, data
sınıf tanımınıza eklenen otomatik olarak oluşturulmuş bir koddur .
Notlar:
- Bir Java'yı
Parcelable
doğrudan Kotlin'e dönüştürmeye çalışmak , Kotlin eklentisinin ( 1.1.3
) mevcut sürümüyle aynı sonucu vermeyecektir .
- Mevcut
Parcelable
kod oluşturucunun sunduğu bazı fazladan kaşlı ayraçları kaldırmak zorunda kaldım . Küçük bir hata olmalı.
Umarım bu ipucu benim için olduğu kadar sizin için de işe yarar.