Android: запускать разные действия в стеке, используя один и тот же класс - PullRequest
0 голосов
/ 02 марта 2011

У меня похожая проблема с этим: Android: несколько экземпляров активности запущены с одним и тем же намерением.Вывести одно уникально на передний план?

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

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

Я мог бы также пройтиидентификаторы параметров при запуске каждого действия и создание экземпляров объектов в одно и то же время для каждого действия и последующее использование этих идентификаторов для доступа к методам соответствующих объектов ...

Изменить, чтобы уточнить: Позвольте мне использовать пример того, чтоЯ пытаюсь достичь.У меня есть класс A, и я использую этот же класс для создания нескольких действий в стеке.После создания этих действий мне нужно статически изменить данные, скажем, по одному из этих действий, вызывая A.alterData ();, но не при создании действий, поэтому нет способа сделать это, запустив действия с разными данными. Поскольку существует несколько экземпляров этого класса, если я сделаю это, это приведет к изменению данных на всех этихдействия, которые используют класс А.Смогу ли я каким-то образом использовать объекты и методы для этих объектов, чтобы изменить данные о различных действиях, использующих один и тот же класс?

какие-либо другие идеи?

Ответы [ 2 ]

0 голосов
/ 02 марта 2011

Я бы поставил параметры для каждого вида деятельности, такие как:

intent.putExtra("category", categoryId);

Таким образом, вы не управляете слишком большим глобальным состоянием.

Об изменении данных - если вы говорите о обновлении данных из исходного источника, то вы, вероятно, должны делать это в методе onResume () Активность . Ознакомьтесь с жизненным циклом Activity .

Это имеет несколько преимуществ:

  • у вас будет доступ ко всему контексту этого занятия
  • вам не придется делать что-то неприятное, например, получать доступ к данным другого занятия
  • вы не будете тратить время на обновление данных, на которые пользователь не смотрит

Даже если вам нужно обновить данные, есть способы убедиться, что каждое действие «занимается своим делом».

0 голосов
/ 02 марта 2011

Вы можете использовать ActivityGroup. Он в основном содержит список действий, и вам нужно управлять навигацией вокруг них. Похоже, это соответствует вашей ситуации. Есть много примеров из них, которые можно найти через Google.

Как бы я подходил к изменению данных на других экранах, используя общие настройки. Вы можете хранить там любые данные, которые вам нужны, а затем (через группу действий) при смене экрана данные обновляются. Это быстрее и немного эффективнее, чем каждый раз перезапускать намерение.

Другим способом является изменение данных в фоновом режиме без уведомления пользователя. Это может быть сделано, потому что группа Activity загружает все действия, которые она содержит, и они всегда находятся в фоновом режиме, если не указано иное.

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

Имеет ли что-нибудь из этого смысл?

Я могу уточнить, если нужно.

...