يوفر Android نوعًا: Parcel. يتم استخدامه كحاوية لتغليف البيانات ويمكن تسليم البيانات المغلفة من خلال Intent أو IPC. بالإضافة إلى الأنواع الأساسية، يمكن فقط وضع الفئات التي تنفذ واجهة Parcelable في Parcel.
النقاط الرئيسية لتطبيق Parcelable: يجب تنفيذ ثلاثة أشياء
1) طريقة writeToParcel. تقوم هذه الطريقة بكتابة بيانات الفئة في طرد خارجي ويتم الإعلان عنها على النحو التالي:
writeToParcel (علامات Parcel dest, int) راجع javadoc لمعرفة معاني المعلمات المحددة
2) طريقة وصف المحتويات. أنا لا أفهم ما هو الاستخدام على أي حال، يمكنك فقط العودة 0.
3) واجهة Parcelable.Creator ثابتة. تحتوي هذه الواجهة على طريقتين:
ينفذ createFromParcel(Parcel in) وظيفة إنشاء مثيل للفئة من الداخل
newArray(int size) ينشئ مصفوفة من النوع T وحجم الطول، جملة واحدة فقط (إرجاع T[size] جديدة) كافية. من المقدر أن يتم استخدام هذه الطريقة من قبل الفئات الخارجية لإلغاء تسلسل صفائف هذه الفئة.
نشاط تلقي المعلومات للاختبار:
import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.os.Parcelable; اختبار الطبقة العامة يمتد النشاط { @Override public void onCreate(Bundle saveInstanceState) { super.onCreate(savedInstanceState) ; setContentView(R.layout.main); i.getParcelableExtra("yes"); System.out.println("---->"+p.name); ; } }
النشاط المرسل:
import java.util.HashMap; import android.app.Activity; import android.content.Intent; import android.os.Bundle; public class TestNew Extends Activity { @Override public void onCreate(Bundle saveInstanceState) { super.onCreate(savedInstanceState) ; setContentView(R.layout.main); HashMap<String,String>(); p.map.put("yes", "ido");intent.putExtra("yes", p); .class);
فئة التنفيذ القابلة للتجزئة:
import java.util.HashMap; import android.os.Parcel; import android.os.Parcelable; public class Person Implements Parcelable { public HashMap<String,String> Map = new HashMap<String,String> (); @Override public int descriptionContents() { return 0 } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeMap(map); dest.writeString(name); } public static Final Parcelable.Creator<Person> CREATOR = new Parcelable.Creator<Person>() { // تجاوز المنشئ @Override public Person createFromParcel(Parcel source) { Person p = new Person(); p.name=source.readString(); return p; } @Override public Person[] newArray(int size) { // كعب الأسلوب الذي تم إنشاؤه تلقائيًا return null } };