Android: requestCode и resultCode - PullRequest
       18

Android: requestCode и resultCode

11 голосов
/ 08 августа 2011

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

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, чтобы увидеть результат этого действия, и «дополнительные» намерения для получения возвращаемых данных.


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

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

Ответы [ 2 ]

12 голосов
/ 08 августа 2011

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

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

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

Да. Используйте оператор switch для их обработки.

1 голос
/ 08 августа 2011

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

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