Android: requestCode и resultCode

Мне интересно, правильно ли я понимаю концепции requestCode и resultCode? В принципе, у меня есть произвольное целое число (requestCode), связанное с действием. Например, в Блокнот уроке, мы

private static final int ACTIVITY_CREATE=0;
private static final int ACTIVITY_EDIT=1;

затем мы используем startActivityforResult (intent, requestCode) для запуска действия, например, действия "создать заметку". Мы что-то делаем в этой деятельности и возвращаем resultCode.

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


есть ли что-то особенное во встроенных resultCodes, например RESULT_CANCELED? The документация на сайте разработчика похоже, что встроенные результаты являются просто целыми числами.

и это мне кажется, что это может быть очень грязно? Например, если бы у меня было 10 возможных действий для запуска, мне пришлось бы иметь гигантская функция onActivityResult, чтобы проверить, какая активность возвращается, не так ли?

2 ответов


есть ли что-то особенное во встроенных resultCodes, например RESULT_CANCELED? Документация на сайте разработчика, похоже, предполагают, что в это просто целые числа.

да. Эти коды являются "стандартными" ответами. Например, если начатое действие возвращает RESULT_CANCELED (в частности, действие ОС или стандартное приложение, такое как камера), это означает, что действие было отменено. Эти стандартные результаты следует интерпретировать в соответствии к документации. Фактически, ваши действия должны использовать эти стандартные результаты (чтобы другим разработчикам приложений было легче начать ваши действия), если нет веских причин не делать этого.

и мне кажется, что это может быть очень грязно? Например, если я было 10 возможных действий для запуска, тогда у меня должен был быть гигант функция onActivityResult для проверки возвращаемого действия, разве нет?

да. Использовать Switch для обработки этих.


в целых числах нет ничего особенного - эти константы просто условны. Ваш onActivityResult может быть одним оператором switch, который отправляет результаты методам для их обработки... не нужно быть гигантом. Конечно,следует использовать символические константы, как это кажется вам.