Der Anforderungscode wird nicht automatisch an die gestartete Aktivität übergeben, da dieser Wert nicht bekannt sein muss (und sollte). Es muss nur wissen, was zu tun ist und nicht, wo es gestartet wurde.
Das Starten einer Aktivität ist eigentlich nur eine andere Form des Aufrufs einer Methode. Wenn Sie eine Methode aufrufen, erhalten Sie das Ergebnis synchron (genau dort, wo Sie den Aufruf getätigt haben). In diesem Fall geben Sie nur die Informationen weiter, die die Methode für ihre Arbeit benötigt. Sie sagen nicht, woher Sie es gerufen haben.
Das Starten einer Aktivität ist das asynchrone Analogon zum Aufrufen einer Methode. In diesem Fall erhalten Sie das Ergebnis in der speziellen Methode onActivityResult (). Bei dieser Methode müssen Sie wissen, was mit dem gerade erhaltenen Ergebnis zu tun ist, und Sie haben den Anforderungscode dafür.
Um ein bisschen klarer zu machen, warum es keine gute Idee ist, den Anforderungscode als Parameter zu übergeben, betrachten Sie die Beispielaktivität, in der ein Produkt angezeigt wird, das Sie kaufen können. Bei dieser Aktivität gibt es zwei Schaltflächen mit den Bezeichnungen "Kaufen" und "Anmelden" (da Sie derzeit nicht angemeldet sind). Durch Drücken von "Anmelden" wird eine Aktivität mit dem Namen "Anmelden" gestartet, bei der versucht wird, sich mit den angegebenen Informationen beim Benutzer anzumelden. Durch Drücken von "Kaufen" wird zuerst dieselbe "Anmeldeaktivität" gestartet. Wenn die Anmeldung erfolgreich war, starten Sie die Kaufaktivität.
Jetzt verwendet die Schaltfläche "Anmelden" den Anforderungscode 1, um die Anmeldeaktivität zu starten. Die Schaltfläche "Kaufen" kann jedoch nicht denselben Anforderungscode verwenden, da bei erfolgreicher Anmeldung etwas anderes ausgeführt werden muss. Die Schaltfläche "Kaufen" verwendet also den Anforderungscode 2.
In der Aktivität "Anmelden" erhalten Sie möglicherweise zwei verschiedene Anforderungscodes, je nachdem, von wo aus sie aufgerufen wurden. Sie müssen jedoch genau das gleiche Verfahren ausführen.
Wenn Sie also den Anforderungscode als Parameter übergeben, erhalten Sie Code, der für einige verschiedene Anforderungscodes dasselbe tun muss, z.
if (requestCode == LOGIN || requestCode == BUY) {
// ...
} else ...
Am Ende werden Sie auch die Anforderungscodekonstanten an einem zentralen Ort speichern, z. B. in einer Klasse mit dem Namen RequestCodes.
Kurz gesagt, der Anforderungscode sollte nur verwendet werden, um zu entscheiden, was mit dem empfangenen Ergebnis geschehen soll. Auf diese Weise erhalten Sie einen modulareren, einfacher zu wartenden und zu erweiternden Code.