Android предоставляет тип: Посылка. Он используется в качестве контейнера для инкапсуляции данных. Инкапсулированные данные могут быть доставлены через Intent или IPC. Помимо базовых типов, в Parcel можно помещать только классы, реализующие интерфейс Parcelable.
Ключевые моменты реализации Parcelable: необходимо реализовать три вещи
1) метод writeToParcel. Этот метод записывает данные класса во внешний объект Parcel. Он объявляется следующим образом:
writeToParcel (Parcel dest, int flags) См. javadoc для получения информации о конкретных значениях параметров.
2) метод описать содержимое. Я не понимаю, в чем польза. В любом случае, вы можете просто вернуть 0.
3) Статический интерфейс Parcelable.Creator. Этот интерфейс имеет два метода:
createFromParcel(Parcel in) реализует функцию создания экземпляра класса из in
newArray(int size) создает массив типа T и размера длины, достаточно всего одного предложения (возвращает новый T[размер]). Предполагается, что этот метод используется внешними классами для десериализации массивов этого класса.
Активность по получению информации для тестирования:
импорт android.app.Activity; импорт android.os.Bundle; импорт android.os.Parcelable; тест общественного класса расширяет действие { @Override public void onCreate (Bundle saveInstanceState) { super.onCreate (savedInstanceState) ; setContentView(R.layout.main); намерение я = getIntent(); i.getParcelableExtra("да"); System.out.println("---->"+p.name("---->"+p.map.size()); ; } }
Отправлено действие:
импорт java.util.HashMap; импорт android.app.Activity; импорт android.content.Intent; импорт общественного класса TestNew расширяет активность { @Override public void onCreate (Bundle saveInstanceState) { super.onCreate (savedInstanceState) ; setContentView(R.layout.main); намерение = новое намерение (); p = новое лицо (); HashMap<String,String>(); p.map.put("да", "ido"); p.name="ok"; Intent.putExtra("да", p); .класс); startActivity(намерение);
Класс реализации Parcelable:
import java.util.HashMap; import android.os.Parcelable; public class Person реализует Parcelable { public HashMap<String,String> map = new HashMap<String,String> (); @Override public intdescriptionContents() { 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 Creator @Override public Person createFromParcel(Parcel source) { Человек p = новый Person(); p.map=source.readHashMap(HashMap.class.getClassLoader()); p.name=source.readString(); return p; } @Override public Person[] newArray(int size) { // TODO Автоматически созданная заглушка метода return null } };