অ্যান্ড্রয়েড স্টুডিও এবং কোটলিন প্লাগইন ব্যবহার করে , আমি আমার পুরানো জাভা Parcelable
গুলি কোনও অতিরিক্ত প্লাগইন ছাড়াই রূপান্তর করার একটি সহজ উপায় খুঁজে পেয়েছি (যদি আপনি চান তবে একটি ব্র্যান্ডের নতুন data
শ্রেণিকে একটিতে রূপান্তর করাParcelable
করতে, ৪ র্থ কোড স্নিপেটে চলে যান)।
ধরা যাক আপনার Person
সমস্ত Parcelable
বয়লার প্লেট সহ একটি ক্লাস রয়েছে :
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
একটি খালি হাড়, সরল, পুরাতন জাভা অবজেক্ট (সম্পত্তি চূড়ান্ত হওয়া উচিত এবং নির্মাণকারীর দ্বারা সেট করা উচিত) রেখে বাস্তবায়নটি ছড়িয়ে দিয়ে শুরু করুন :
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;
}
}
তারপরে Code > Convert Java file to Kotlin File
বিকল্পটি তার যাদু করতে দিন :
class Person(val firstName: String, val lastName: String, val age: Int)
এটিকে data
শ্রেণিতে রূপান্তর করুন :
data class Person(val firstName: String, val lastName: String, val age: Int)
এবং পরিশেষে, আসুন এটি Parcelable
আবার পরিবর্তন করুন। ক্লাসের নামটি হোভার করুন এবং অ্যান্ড্রয়েড স্টুডিওতে আপনাকে বিকল্পটি দেওয়া উচিত Add Parcelable Implementation
। ফলাফলটি দেখতে এমন হওয়া উচিত:
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)
}
}
}
আপনি দেখতে পাচ্ছেন, Parcelable
বাস্তবায়নটি কিছু data
শ্রেণি সংজ্ঞাতে স্বয়ংক্রিয়ভাবে উত্পন্ন কোড ।
মন্তব্য:
- কোনও জাভা
Parcelable
সরাসরি কোটলিনে রূপান্তরিত করার চেষ্টা করা কোটলিন প্লাগইন ( 1.1.3
) এর বর্তমান সংস্করণ সহ একই ফলাফল তৈরি করবে না ।
- বর্তমান
Parcelable
কোড জেনারেটরের পরিচয় করিয়ে দিয়ে আমাকে কিছু অতিরিক্ত কোঁকড়া ধনুর্বন্ধনী অপসারণ করতে হয়েছিল। অবশ্যই একটি ছোটখাটো বাগ থাকতে হবে।
আমি আশা করি এই টিপটি আপনার পক্ষে যেমন কাজ করেছে তেমনি এটি আমার পক্ষেও হয়েছে।