Mã yêu cầu không được tự động chuyển đến hoạt động đã bắt đầu vì nó không (và không nên) cần biết giá trị này. Nó chỉ cần biết phải làm gì và không phải bắt đầu từ đâu.
Bắt đầu một hoạt động thực sự chỉ là một hình thức khác của việc gọi một phương thức. Khi bạn gọi một phương thức, bạn sẽ nhận được kết quả đồng bộ (ngay tại nơi bạn thực hiện cuộc gọi). Trong trường hợp này, bạn chỉ chuyển thông tin mà phương thức cần để thực hiện công việc của nó. Bạn không nói cho nó biết bạn đã gọi nó từ đâu.
Bắt đầu một hoạt động là tương tự không đồng bộ của việc gọi một phương thức, trong trường hợp đó bạn nhận được kết quả trong phương thức đặc biệt onActivityResult (). Trong phương pháp này, bạn cần biết phải làm gì với kết quả bạn vừa nhận được và bạn có mã yêu cầu cho việc này.
Để làm rõ hơn một chút tại sao chuyển mã yêu cầu làm tham số không phải là ý kiến hay, hãy xem xét hoạt động ví dụ đang hiển thị sản phẩm bạn có thể mua. Trên hoạt động này có hai nút có nhãn "Mua" và "Đăng nhập" (vì bạn hiện chưa đăng nhập). Nhấn "Đăng nhập" sẽ bắt đầu một hoạt động có tên "Đăng nhập" sẽ cố gắng đăng nhập người dùng bằng thông tin được cung cấp. Nhấn "Mua" trước tiên sẽ bắt đầu cùng một hoạt động "Đăng nhập" và nếu đăng nhập thành công, hãy bắt đầu hoạt động mua.
Bây giờ, nút "Đăng nhập" sử dụng mã yêu cầu 1 để bắt đầu hoạt động đăng nhập, nhưng nút "Mua" không thể sử dụng mã yêu cầu giống như vậy vì nó sẽ phải thực hiện điều gì đó khác nếu đăng nhập thành công. Vì vậy, nút "Mua" sử dụng mã yêu cầu 2.
Trong hoạt động "Đăng nhập", bạn có thể nhận được hai mã yêu cầu khác nhau tùy thuộc vào nơi nó được gọi đến, nhưng bạn sẽ cần thực hiện quy trình tương tự.
Vì vậy, nếu bạn chuyển mã yêu cầu dưới dạng tham số, bạn sẽ nhận được mã cần thực hiện cùng một thứ cho một vài mã yêu cầu khác nhau, như:
if (requestCode == LOGIN || requestCode == BUY) {
// ...
} else ...
Bạn cũng sẽ kết thúc với việc lưu trữ các hằng số mã yêu cầu ở một vị trí trung tâm, ví dụ như một lớp có tên RequestCodes.
Tóm lại, mã yêu cầu chỉ nên được sử dụng để quyết định phải làm gì với kết quả nhận được. Bằng cách này, bạn sẽ có một mã mô-đun hơn, dễ bảo trì hơn và dễ mở rộng hơn.