Передача реальных объектов между действиями или фрагментами может быть достигнута за счет реализации модельных компонентов Parcelable
или Serializable
интерфейса.
Parcelable: A Parcel похож на Bundle, но является более сложным и может поддерживать более сложную сериализацию классов. Приложения могут реализовать интерфейс Parcelable
для определения классов приложений, которые могут быть переданы, особенно при использовании служб.
Вы можете увидеть, как реализовать интерфейс Parcelable в этой статье here.
public class Foo implements Parcelable {
...
}
Serializable: сериализуемый интерфейс является стандартным Java сериализации. Вы можете узнать больше об этом here.
public class Foo implements Serializable {
private static final long serialVersionUID = 0L;
...
}
Предположим, у вас есть класс Foo
реализует Parcelable правильно, чтобы поместить его в Intent в деятельности:
Intent intent = new Intent(getBaseContext(), NextActivity.class);
Foo foo = new Foo();
intent.putExtra("foo", foo);
startActivity(intent);
Чтобы получить его от намерения в другой деятельности:
Foo foo = (Foo) getIntent().getExtras().getParcelable("foo");
* * EDIT **
Как оригинальный вопрос, заданный для фрагментов, то это, как это работает:
Fragment fragment = new Fragment();
Foo foo = new Foo();
Bundle bundle = new Bundle();
bundle.putParcelable("Foo", foo);
fragment.setArguments(bundle);
Чтобы получить его из пучка в другом фрагменте:
Foo foo = (Foo) bundle.getParcelable("Foo");
Надеется, что это помогает!
мне не нужно, чтобы извлечь/разобрать объект типа varible 'INT, строка, логическое etc..'' @Override public void writeToParcel (Parcel dest, int flags) { dest.writeString (varible1); dest.writeInt (varible2); dest.writeString (varible3); dest.writeString (varible4); } ', а затем собрать все значения из каждой переменной. Мне нужно передать/передать/поделиться объектом как единый объект со всеми методами вместе. – biraj800
Android Dalvik (DVM) работает по-разному, чем JVM во многих аспектах, которые вы можете увидеть в этой статье [http://stackoverflow.com/questions/11374477/android-javac-vs-dalvik). Каждое приложение предоставило свой собственный экземпляр в DVM, что означает, что для множества активных приложений требуется несколько экземпляров DVM. Говоря это, совместное использование статической памяти с разными процессами не является хорошей идеей и не гарантирует время жизни состояния объекта в памяти. DVM также имеет автоматический сборщик мусора, подобный JVM-реализации Java. – Deminem
Чтобы решить эту проблему, Java обеспечивает сериализацию для маршаллинга/unmarshalling, чтобы сохранить состояние объекта. Тем не менее, андроид предоставляет собственный интерфейс 'Parcelable', который более эффективен, чем' Serializable'. Я бы порекомендовал прочитать о marshalling/unmarshalling [здесь] (https://coderwall.com/p/vfbing/passing-objects-between-activities-in-android). Согласно рекомендациям Android, передача объектов между действиями/фрагментами может быть достигнута только с помощью Parcelable/Serializable. Все остальные методы имеют свои плюсы и минусы. – Deminem