У меня есть три действия, назовите их A, B и C. A - родительская активность как B, так и C. Здесь все возможные потоки активности.Деятельность A-> B-> C-> A. Как получить данные B в onActivityResult из A
- A -> B -> нажмите кнопку назад или в панели действий -> А.
- A -> C -> нажмите кнопку назад или в панели действий -> А.
- A - > B -> C -> нажмите обратно -> B.
- 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 исчезнет.
я тоже сталкивался тот же вопрос много раз, Я обрабатываю этот сценарий следующим образом.Зарегистрируйте трансляцию в действии A в onCreate() и отмените регистрацию в onDestroy(). Из действия C отправьте трансляцию с тем же действием. Это очень хорошо для меня, но я сомневаюсь, что это правильное решение. Надейтесь, что некоторые другие вступят в это с лучшим решением. –