2016-07-07 3 views
1

У меня есть три действия, назовите их A, B и C. A - родительская активность как B, так и C. Здесь все возможные потоки активности.Деятельность A-> B-> C-> A. Как получить данные B в onActivityResult из A

  1. A -> B -> нажмите кнопку назад или в панели действий -> А.
  2. A -> C -> нажмите кнопку назад или в панели действий -> А.
  3. A - > B -> C -> нажмите обратно -> B.
  4. A -> B -> C -> нажмите на кнопку в панели действий -> А.

Оба B и C могут изменять данные, сохраненные в A. Поэтому я делаю B и C, отправляя измененные данные обратно в A с намерением, и используйте A's onActivityResult для обновления этих данных.

Проблема в потоке 4, если B изменяет некоторые данные, как я могу отправить эти изменения обратно в A? Должен ли я передать их на C и сделать C отправить их обратно в A, а C абсолютно не нужны эти данные?

Update

Я обнаружил, что в потоке 4. Активность А-х onActivityResult не получают возвращаемый Intent параметр Intent всегда null, поэтому мы не можем передавать любые данные от С до А.

Первоначально я думаю, что A получит C Intent, поэтому я могу передать данные B на C, затем на A, но это неправильно. Деятельность A не получает Intent в потоке 4.

Теперь я решил изменить действие кнопки «вверх», сделать ее такой же, как кнопка «Назад», так что поток 4 исчезнет.

+0

я тоже сталкивался тот же вопрос много раз, Я обрабатываю этот сценарий следующим образом.Зарегистрируйте трансляцию в действии A в onCreate() и отмените регистрацию в onDestroy(). Из действия C отправьте трансляцию с тем же действием. Это очень хорошо для меня, но я сомневаюсь, что это правильное решение. Надейтесь, что некоторые другие вступят в это с лучшим решением. –

ответ

0

Там нет никаких проблем в потоке 4.

просто нужно модифицирует данные в B, нет необходимости передавать данные в другой деятельности.

позвонить setResult() до того, как B закончил, как и другие flow.it вернется к успешному.

0

Это не прямой ответ на вопрос, но рекомендация:

Когда есть высокое взаимодействие между процессами или необходимости слишком много мероприятий, а не слишком много действий или сделок деятельности, пытаются использовать Фрагменты ,

Использование интерфейсов (аналогично JAVA) - это волшебная палочка фрагментов. Использование фрагментации делает кодирование таким же простым, как и обмен ссылками страниц (Проклятый полезный).

Вот полезные ссылки: (Вы можете копировать, вставить этот код и может манипулировать в соответствии с вашими требованиями)

  1. https://developer.android.com/guide/components/fragments.html
  2. https://developer.android.com/training/basics/fragments/creating.html
Смежные вопросы