Android - startActivityForResult, немедленно запускающий onActivityResult - PullRequest
139 голосов
/ 27 октября 2011

Я запускаю действия из основного действия в своем приложении с помощью вызова startActivityForResult(intent, ACTIVITY_TYPE), и все они работают, кроме одного.

Этот, при вызове, запускает действие по желанию, но в журнале я вижу, что onActivityResult() немедленно запускается. Активность появляется, но RESULT_CANCELED немедленно возвращается к onActivityResult().

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

Имеет ли это смысл для кого-либо? Кто-нибудь видел такое поведение раньше?

Ответы [ 13 ]

0 голосов
/ 26 ноября 2016

В манифесте Android установите android:launchMode="singleTop" для активности, которую вы хотите открыть с результатом, а при открытии установите флаг intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

0 голосов
/ 12 мая 2015

onActivityResult() также передаст RESULT_CANCELED как resultCode, если вы неправильно написали имя пакета или класса в файле манифеста.

0 голосов
/ 20 июля 2013

Для ActivityGroup или TabHost и других, возможно, xxxActivity является subActivity своего родителя.Тогда startActivityForResult не может работать, но родитель может получить результат.

  1. вызов getParent().startActivityForResult() из вашей под-деятельности

  2. вашродитель (ActivityGroup) сможет обрабатывать onActivityResult.Поэтому я создал подкласс ActivityGroup и обработал это onActivityResult.

  3. . Вы можете перенаправить полученный результат обратно в подэтап, если вам это нужно.Просто получите текущую активность по getLocalActivityManager().getCurrentActivity().Мои подзадачи наследуются от пользовательского действия, поэтому я добавил handleActivityResult(requestCode, resultCode, data) в этот подкласс для вызова ActivityGroup.

пример: http://www.cnblogs.com/relinson/archive/2012/03/25/startActivityForResult.html

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