hoặc tôi có nên gửi thêm một số dữ liệu trong Intent để biết cuộc gọi không? Nếu không có phương pháp được xác định trước, chẳng hạn như getIntent
và làm điều gì đó với nó?Làm thế nào để biết liệu một hoạt động được gọi là sử dụng startActivityForResult hay đơn giản được gọi bằng cách sử dụng startActivity?
Trả lời
Tôi biết câu hỏi này được trả lời đã nhưng tôi có một tốt hơn giải pháp ..
Khi hoạt động của bạn bắt đầu ed chỉ bằng startActivity()
phương thức getCallingActivity()
trong hoạt động mục tiêu sẽ trả lại null
. Khi nó được gọi là startActivityForResult()
, nó sẽ trả về tên gọi hoạt động.
Xem getCallingActivity để biết thêm chi tiết.
Vì vậy, bạn có thể đăng ký Hoạt động trước khi kết thúc hoạt động gọi điện. Nếu kết quả là null Hoạt động được gọi bởi startActivity()
và nếu kết quả không phải là null thì Activity được gọi là startActivityForResult()
. Đó là nó.
dụ: -
if (getCallingActivity() == null) {
//This Activity was called by startActivity
} else {
//This Activity was called by startActivityForResult
}
bạn có thể đặt cờ như "0" và "1", đặt ý định, vì vậy nếu "0" thì startActivity hoặc "1" cho startActivityForResult ... điều này thật đơn giản, phải không?
Đây là loại lộn xộn vì bạn xử lý nhiều dữ liệu hơn bạn thực sự cần. Câu trả lời bên dưới từ @PankajKumar là câu trả lời rõ ràng nhất có thể. – WarrenFaith
Tôi nghĩ rằng bạn nên phơi bày một số ý định cho cùng một hoạt động trong tệp kê khai của mình, sau đó kiểm tra ý định gọi để điều chỉnh hành vi của bạn.
Ví dụ cho hoạt động bộ lọc của bạn ý trong biểu hiện:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<action android:name="android.intent.action.EDIT" />
<action android:name="android.intent.action.PICK" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
và mã tương ứng trong hoạt động của bạn onCreate:
if (getIntent().getAction().equals(Intent.ACTION_VIEW)) {
// do whatever you need to do here
} else if (getIntent().getAction().equals(Intent.ACTION_PICK)){
...
}
đây cũng là một cách tiếp cận gud – Harinder
- 1. sử dụng startActivityForResult từ không hoạt động
- 2. DialogFragment crash Hoạt động khi gọi startActivity()
- 3. Java không thể gọi JDialog đơn giản được xây dựng bằng cách sử dụng eclipse WindowBuilder
- 4. Hoạt động bắt đầu với startActivityForResult() không trở về gọi Hoạt động
- 5. Làm thế nào để sử dụng startActivityForResult() thông qua một DialogFragment?
- 6. Làm cách nào để biết liệu handleOpenURL có được gọi là khởi động ứng dụng hay khi ứng dụng đang chạy?
- 7. Làm thế nào để sử dụng quicklisp khi chương trình CL được gọi là một kịch bản shell?
- 8. getChildDrawingOrder được gọi/sử dụng không đúng?
- 9. Làm thế nào để biết nếu UserControl đang hoạt động khác hơn là sử dụng IsFocused
- 10. Làm thế nào để gọi một asp: Nút OnClick sự kiện bằng cách sử dụng JavaScript?
- 11. Làm thế nào để sử dụng FactoryGirl để tạo ra một thuộc tính được gọi là "bí danh"?
- 12. Làm cách nào để gọi hoạt động "gọi" là Hoạt động?
- 13. onConfigurationChanged không được gọi khi setRequestedConfiguration đã được sử dụng
- 14. Trong PHP, làm thế nào để bạn có được lớp được gọi là bí danh khi sử dụng class_alias?
- 15. Viết một hàm đơn giản bằng cách sử dụng khi
- 16. Làm thế nào để biết đĩa Windows được sử dụng để khởi động
- 17. Làm thế nào để sử dụng RTLD_DEEPBIND khi gọi ngầm?
- 18. Làm thế nào tôi có thể chuyển một đối số cho một hàm được gọi là sử dụng setTimeout?
- 19. Làm thế nào để gọi một Webservice PHP từ Android bằng cách sử dụng KSOAP2?
- 20. Làm thế nào để sử dụng HttpWebRequest để gọi một hoạt động dịch vụ Web có tham số byte []?
- 21. Làm thế nào để thực hiện một kiến trúc REST và ContentProvider đơn giản bằng cách sử dụng Mô hình?
- 22. làm thế nào để đơn giản hóa mã của tôi bằng cách sử dụng jquery?
- 23. Làm thế nào để gọi một sự kiện tự động khi một hàm được gọi?
- 24. AsyncUdpSocket làm thế nào để sử dụng nhận được
- 25. Mã hóa AES đơn giản bằng cách sử dụng WinAPI
- 26. Cách gọi hàm được viết trong tệp javascript từ C# bằng cách sử dụng IronJS
- 27. Làm thế nào để biết một thư mục được gắn từ xa bằng cách sử dụng Java
- 28. Làm thế nào để vượt qua formcollection bằng cách sử dụng ajax gọi đến một hành động?
- 29. Xác nhận một hàm/phương thức không được gọi bằng cách sử dụng Mock
- 30. Làm thế nào để kiểm tra xem một nút được nhấp bằng cách sử dụng JavaScript
một giải pháp sạch hơn cờ thông qua ý định ... cảm ơn – WarrenFaith
@WarrenFaith Cảm ơn bạn. –
Xin lưu ý rằng 'getCallingActivity()' trả về 'null' nếu chế độ khởi động hoạt động của hoạt động bắt đầu là' singleTask' hoặc 'singleInstance', hoặc bắt đầu bằng' FLAG_ACTIVITY_NEW_TASK'. – EpicPandaForce