İstek kodu, başlatılan etkinliğe otomatik olarak iletilmez çünkü bu değeri bilmesi gerekmez (ve olmamalıdır). Nereden başladığını değil, sadece ne yapacağını bilmesi gerekir.
Bir aktivite başlatmak, aslında bir yöntemi çağırmanın başka bir şeklidir. Bir yöntemi aradığınızda, sonucu eşzamanlı olarak alırsınız (tam burada aramayı yaptığınız yerde). Bu durumda, yalnızca yöntemin işini yapması için ihtiyaç duyduğu bilgileri aktarırsınız. Onu nereden çağırdığını söylemiyorsun.
Etkinlik başlatmak, bir yöntemi çağırmanın zaman uyumsuz analoğudur, bu durumda sonucu özel onActivityResult () yönteminde alırsınız. Bu yöntemde, yeni aldığınız sonuçla ne yapacağınızı bilmeniz ve bunun için talep koduna sahip olmanız gerekir.
İstek kodunu bir parametre olarak iletmenin neden iyi bir fikir olmadığını biraz daha netleştirmek için, satın alabileceğiniz bir ürünü gösteren örnek etkinliği düşünün. Bu aktivitede "Satın Al" ve "Giriş Yap" etiketli iki düğme vardır (şu anda giriş yapmadığınız için). "Oturum Aç" düğmesine basmak, sağlanan bilgileri kullanarak kullanıcı oturum açmaya çalışacak "Oturum Aç" adlı bir etkinlik başlatacaktır. "Satın Al" a basmak ilk olarak aynı "Giriş" etkinliğini ve giriş başarılı olduysa satın alma etkinliğini başlatır.
Şimdi, "Oturum Aç" düğmesi, oturum açma etkinliğini başlatmak için istek kodu 1'i kullanır, ancak "Satın Al" düğmesi, oturum açma başarılı olursa farklı bir şey yapması gerekeceğinden aynı istek kodunu kullanamaz. Bu nedenle, "Satın al" düğmesi istek kodu 2'yi kullanır.
"Oturum Açma" etkinliğinde, nereden çağrıldığına bağlı olarak iki farklı istek kodu alabilirsiniz, ancak aynı prosedürü uygulamanız gerekecektir.
Dolayısıyla, istek kodunu bir parametre olarak iletirseniz, birkaç farklı istek kodu için aynı şeyleri yapması gereken bir kod elde edersiniz, örneğin:
if (requestCode == LOGIN || requestCode == BUY) {
} else ...
Ayrıca, istek kodu sabitlerini merkezi bir konumda, örneğin RequestCodes adlı bir sınıfta depolamakla da sonuçlanacaksınız.
Kısacası, istek kodu yalnızca alınan sonuçla ne yapılacağına karar vermek için kullanılmalıdır. Bu şekilde, daha modüler, bakımı daha kolay ve genişletmesi daha kolay bir kod elde edersiniz.