Код запроса не передается в запущенное действие автоматически, потому что ему не нужно (и не должно) знать это значение.Нужно только знать, что делать, а не откуда это началось.
На самом деле запуск действия - это просто еще одна форма вызова метода.Когда вы вызываете метод, вы получаете результат синхронно (прямо там, где вы сделали вызов).В этом случае вы только передаете информацию, которую метод должен выполнить для своей работы.Вы не указываете, откуда вы ее вызвали.
Запуск действия является асинхронным аналогом вызова метода, и в этом случае вы получаете результат в специальном методе onActivityResult ().В этом методе вам нужно знать, что делать с только что полученным результатом, и у вас есть код запроса для этого.
Чтобы было немного понятнее, почему не стоит передавать запроскод в качестве параметра, рассмотрим пример деятельности, которая показывает продукт, который вы можете купить.В этом упражнении есть две кнопки с надписью «Купить» и «Войти» (так как вы в данный момент не вошли в систему).Нажатие «Логин» запустит действие с именем «Логин», которое попытается войти в систему, используя предоставленную информацию.Нажатие «Купить» сначала запустит ту же самую операцию «Вход в систему», и, если вход был успешным, запустите действие покупки.
Теперь кнопка «Вход» использует код запроса 1 для запуска действия входа, нокнопка «Купить» не может использовать тот же код запроса, поскольку в случае успешного входа она должна будет выполнить что-то другое.Таким образом, кнопка «Купить» использует код запроса 2.
В действии «Вход в систему» вы можете получить два разных кода запроса в зависимости от того, откуда он был вызван, но вам нужно будет выполнить ту же самую процедуру.
Таким образом, если вы передадите код запроса в качестве параметра, вы получите код, который должен выполнять те же действия для пары разных кодов запроса, например:
if (requestCode == LOGIN || requestCode == BUY) {
// ...
} else ...
В конечном итоге вы также будете хранить константы кода запроса в центральном местоположении, например, в классе с именем RequestCodes.
Короче говоря, код запроса следует использовать только для решения, что делать с полученным результатом.Таким образом, вы получите более модульный, простой в обслуживании и простой в расширении код.