Kiểm tra xem hoạt động đã được gọi để biết kết quả chưa


81

Có thể biết nếu một số hoạt động đã được gọi cho kết quả, đang sử dụng startActivityForResult()hay chỉ được bắt đầu sử dụng startActivity()?

Tôi cần kiểm soát điều này, nếu nó được gọi cho kết quả thì hành vi sẽ khác.

Câu trả lời:


163

Khi hoạt động của bạn được bắt đầu chỉ bằng startActivity()một getCallingActivity()phương pháp trong hoạt động mục tiêu sẽ trở lại null.

Khi nó được gọi bởi startActivityForResult()nó sẽ trả về tên của hoạt động gọi.

Xem Tài liệu cho getCallingActivity():

Trả lại tên của hoạt động đã gọi hoạt động này. Đây là người mà dữ liệu trong setResult()sẽ được gửi đến. Bạn có thể sử dụng thông tin này để xác nhận rằng người nhận được phép nhận dữ liệu.

Lưu ý: nếu hoạt động gọi không mong đợi kết quả (nghĩa là nó không sử dụng startActivityForResult(Intent, int)biểu mẫu bao gồm mã yêu cầu), thì gói gọi sẽ rỗng.

Lợi nhuận

Tên thành phần của hoạt động sẽ nhận được câu trả lời của bạn hoặc null nếu không có.


1
Nếu bạn bắt đầu hoạt động với: FLAG_ACTIVITY_NEW_TASK, nó không làm việc :( (tôi đã phải bắt đầu các hoạt động đăng nhập ra khỏi bối cảnh trong một trình xử lý lỗi) Bất kỳ ý tưởng khác cám ơn.?!
bentzy

điều này không hoạt động nếu hoạt động được bắt đầu với một đoạn :gment.getActivity (). startActivityForResult (Ý định, Mã yêu cầu);
Mario Lenci

@MarioLenci Nó hoạt động chính xác đối với tôi. Không có vấn đề cho dù tôi bắt đầu nó từ hoạt động hay phân mảnh.
Robyer

@MarioLenci bởi vì khi bạn ở trong một phân mảnh, bạn không phải gọi getActivity().startActivityFor…từ một phân mảnh mà bạn phải thực hiện startActivityForResulttrực tiếp.
Martin Marconcini
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.