tôi đã dành một số thời gian đào vấn đề này và kết luận của tôi là nó là không thể mà không cần thay đổi nhất định trong cả hoạt động (X
vàY
):
Trong Activity X
:
- Bạn nên tạo thêm một số
PendingIntent
(P2
), lần này trong ngữ cảnh Activity X
, sử dụng X.createPendingResult
. Bây giờ, gửi dữ liệu qua P2
sẽ dẫn đến việc gọi số X.onActivityResult
.
- Bạn nên đính kèm
PendingIntent P2
làm thêm PendingIntent P
trước khi send
-giảm.
Trong Activity Y
:
- Bạn nên giải nén
PendingIntent P2
từ getIntent()
của nó.
- Bạn không nên gọi số
setResult
, nhưng đặt kết quả của bạn trong một số trường cục bộ.
- Bạn nên ghi đè
onDestroy
và gửi PendingIntent P2
từ đó.
Tại sao theo cách này?
Tôi đoán đó là điều gì đó về bảo mật của một loại. Activity Y
có thể được bắt đầu bằng một nhiệm vụ riêng biệt (hơn Activity X
). Có lẽ setResult
được thiết kế để xử lý các kết quả vượt qua chỉ trong cùng một tác vụ? Để định nghĩa nhiệm vụ, hãy xem here.
PS. Như với lệnh gọi 'startActivityFotResult' thông thường, tôi cũng muốn được thông báo khi Y bị hủy (R bằng' RESULT_CANCELED' trong trường hợp này). – wrygiel