как общаться между Activity (s), используя непримитивный объект - PullRequest
2 голосов
/ 11 февраля 2011

Возможно ли взаимодействие деятельности с использованием определенного пользователем объекта?

p.s.

  1. Насколько я знаю, когда я хочу, чтобы Деятельность (и) взаимодействовали друг с другом, я должен использовать объекты примитивного типа, такие как int, String, boolean, ... и т. Д.

  2. Мы не используем Serializable, Parcelable и статический класс.

Ответы [ 3 ]

3 голосов
/ 11 февраля 2011

Если вы говорите о дополнениях при вызове намерений, вы можете реализовать интерфейс Serializable или Parcelable в ваших объектах, чтобы пропустить их через.

Вы также можете поместить этот объект в собственную реализацию Приложение класса и доступ к нему в классе деятельности или обслуживания , как описано в моем другом ответе .Но имейте в виду, что совместное использование состояния таким образом может быть признаком более общей проблемы в вашем дизайне.

1 голос
/ 11 февраля 2011

У вас есть несколько вариантов:

1.Вы можете обернуть более сложную структуру в классе, который реализует интерфейс Parcelable, который можно сохранить в дополнительном.

2.Выможет обернуть более сложную структуру в классе, который реализует интерфейс Serializable, который может быть сохранен в дополнительных

3. Вы используете элементы статических данных для передачи содержимого, поскольку все они находятся в одном процессе

4.Вы используете внешнее хранилище (файл, база данных, SharedPreferences)

5.В качестве человека, который только что опубликовал заметку, используйте общий компонент, такой как пользовательское приложение или локальная служба

То, что вы не хотите делать, это передавать большие вещи с помощью дополнений.Например, если вы создаете приложение, которое захватывает изображения с камеры, вы не хотите передавать их в дополнениях - используйте элемент статических данных (как бы странно это не звучало).Интенты предназначены для кросс-процесса, что означает, что происходит некоторое количество копий данных, которых вы хотите избежать, когда это не нужно для больших вещей.

Ответная копия с здесь

0 голосов
/ 11 февраля 2011
Intent myintent = new Intent(Info.this, GraphDiag.class).putExtra("<StringName>", value);
startActivity(myintent);

используйте приведенный выше код в родительском действии

и в дочернем действии

int s= getIntent().getIntExtra("<StringName>");

в том же u, чтобы получить значения типа float, char, String

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...