El código de solicitud no se pasa automáticamente a la actividad iniciada porque d no es necesario (y no debería) saber este valor. Solo necesita saber qué hacer y no desde dónde se inició.
Iniciar una actividad es en realidad otra forma de llamar a un método. Cuando llamas a un método, recibes el resultado de forma síncrona (justo donde hiciste la llamada). En este caso, solo está ingresando la información que el método necesita para hacer su trabajo. No estás diciendo de dónde lo llamaste.
El inicio de una actividad es el análogo asíncrono de invocar un método, en cuyo caso recibirá el resultado en el método especial onActivityResult(). En este método, debe saber qué hacer con el resultado que acaba de recibir y tiene el código de solicitud para esto.
Para aclarar un poco por qué no es una buena idea pasar el código de solicitud como parámetro, considere la actividad de ejemplo que muestra un producto que puede comprar. En esta actividad, hay dos botones etiquetados como "Comprar" e "Iniciar sesión" (ya que actualmente no está conectado). Al presionar "Iniciar sesión" se iniciará una actividad llamada "Iniciar sesión" que intentará iniciar sesión en el usuario utilizando la información proporcionada. Al presionar "Comprar" se iniciará la misma actividad de "Inicio de sesión" y si el inicio de sesión fue exitoso, comience la actividad de compra.
Ahora, el botón "Iniciar sesión" usa el código de solicitud 1 para iniciar la actividad de inicio de sesión, pero el botón "Comprar" no puede usar el mismo código de solicitud ya que tendrá que hacer algo diferente si el inicio de sesión es exitoso. Por lo tanto, el botón "Comprar" utiliza el código de solicitud 2.
En la actividad "Iniciar sesión", es posible que reciba dos códigos de solicitud diferentes según el lugar desde donde se realizó la llamada, pero deberá realizar el mismo procedimiento.
lo tanto, si se pasa en el código de petición como un parámetro, el resultado final será con el código que tiene que hacer lo mismo para un par de diferentes códigos de solicitud, como:
if (requestCode == LOGIN || requestCode == BUY) {
// ...
} else ...
También terminar almacenando las constantes del código de solicitud en una ubicación central, por ejemplo una clase llamada RequestCodes.
En resumen, el código de solicitud solo debe usarse para decidir qué hacer con el resultado recibido. De esta forma, terminará con un código más modular, más fácil de mantener y más fácil de extender.
¿Realmente no hay manera para que una actividad niño obtener su solicitud ¿código? –
Hasta ahora, según mi mejor conocimiento, no pienso de otra manera. –
Me preguntaba lo mismo: esta es una de esas cosas en las API de Android que no tiene ningún sentido lógico. –