У меня вопрос о методе startActivityForResult:

У меня есть 3 действия: A, B и C. A запускает startActivityForResult для запуска B, тогда B вернет результат A. Если resultCode в порядке, A запустит C. Как показано на изображении ниже:

enter image description here

Согласно моему тесту на устройствах под управлением Android 2.3.x он всегда показывает активность A в течение короткого периода времени перед запуском C. Но для устройств под управлением 4.x активность A не отображается.

Итак, есть ли способ скрыть A от появления после того, как B вернет ему результат?

0
dumbfingers 10 Окт 2012 в 14:54
Может быть, просто начать активность вместо forResult и запустить C из B, если результат вас устраивает? Возможно, это не очень хорошее решение, но я вижу, что оно работает.
 – 
keyser
10 Окт 2012 в 14:55
Спасибо за быстрый ответ. Но по какой-то причине мне нужен результат из B. В противном случае прямой запуск C из B - лучший выбор.
 – 
dumbfingers
10 Окт 2012 в 14:57
Вы имеете в виду, что вам это нужно в A? Нет никакого способа обойти это? (Я понимаю, если нет, просто интересно)
 – 
keyser
10 Окт 2012 в 14:58
Как сказал @Keyser, вы должны запустить Activity C непосредственно из B. Я не вижу варианта использования, когда вы хотите, чтобы он вернулся в A, а затем запустил C.
 – 
Sudarshan Bhat
10 Окт 2012 в 15:01
Скажем, если A - меню, B - запуск камеры, C - обработка постобработки изображения. B вернет результат 1. Если фотография сделана успешно; 2. где сохранен img; Получив этот результат, A решит запускать C или нет. Если код результата в порядке, запустите C, если он отменен (например, пользователь нажал кнопку возврата в B), A выдаст всплывающее уведомление, и приложение останется в A.
 – 
dumbfingers
10 Окт 2012 в 15:04

1 ответ

Лучший ответ

На примере вашей камеры я бы сделал следующее:

A запускается.

A открывает B с помощью startActivity.

Если фотография сделана успешно (которую вы регистрируете в B), отправьте ее на C, если нет,

finish() и вернитесь в A.

Поэтому все, что вам нужно сделать, это переместить этап проверки на B. Не вижу смысла в меню это проверять.

0
keyser 10 Окт 2012 в 15:44