Как Activity.finish () и startActivityForResult () взаимодействуют друг с другом? - PullRequest
1 голос
/ 12 ноября 2010

У меня есть вопрос о Activity.finish().

В моем коде Android есть 4 действия ( A , B , C , D ).Начальное действие A вызывает startActivityForResult(intent, reqCode) для запуска действия B . B запускается C , а затем finish(), не ожидая результата. C делает то же самое, что и B , запускается D и затем finish(). D вернет некоторый результат, к setResult(resultCode).

Когда мой код запустится и действие D вернет некоторый результат, A поймаетRESULT_CANCELED на onActivityResult(), даже если RESULT_OK возвращается в D .Я предполагаю, что RESULT_CANCELED от действия B , которое было прекращено до того, как D возвращает результат, а не от D .

Но, мой вопрос, почему действие A catch RESULT_CANCELED после D возвращает некоторый результат, а не сразу после прекращения B ?И что я должен сделать, чтобы A поймал результаты из D ?Нужно ли сохранять B и C в живых, чтобы передать результаты от D до A ?

Ответы [ 3 ]

3 голосов
/ 12 ноября 2010

Из вашего объяснения я понял, что активность A начинается B начинается C и C начинается D .

B после запуска C вызывает finish(), а C также делает то же самое.

С B был запущен A , он будет ожидать результата от B , так как A не был связан с D , это не имеет значения, даже если D вернет какой-то результат.

Если вы хотите получить RESULT_OK в onActivityResult() из A , вам нужно будет получить действительный результат от B .Для этого вы должны получить результат D в C , затем передать его B , затем из B передать его A .

Вы можете вызвать finish() в onActivityResult() из B и C после передачи результата обратно их соответствующим действиям вызова через Intent.

Я думаю, я правильно понял ваш вопрос.Если это не так, пожалуйста, прости меня.

1 голос
/ 12 апреля 2011

Начало действия B и C с флагом Intent.FLAG_ACTIVITY_FORWARD_RESULT.

0 голосов
/ 12 ноября 2010

Пусть это не будет слишком разумным, но почему бы вам **set result of B and C to RESULT_OK** не уйти от оценки ситуации? Я надеюсь

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