或者我應該在意圖中發送一些額外的數據來了解這個呼叫嗎?如果沒有預定義的方法,如getIntent
並且對它做些什麼?如何使用startActivityForResult知道是否使用startActivity調用某個活動?
回答
我知道這個問題已經回答了,但我有一個更好的解決方案..
當您的活動開始時只需通過startActivity()
a getCallingActivity()
方法在目標活動將返回null
。當它被startActivityForResult()
調用時,它將返回呼叫活動的名稱。
請參閱getCallingActivity瞭解更多詳情。
因此,您可以在完成調用活動之前檢查活動。如果結果爲空Activity由startActivity()
調用,如果結果不爲null,則Activity由startActivityForResult()
調用。而已。
例如: -
if (getCallingActivity() == null) {
//This Activity was called by startActivity
} else {
//This Activity was called by startActivityForResult
}
你可以放置一個像「0」和「1」這樣的標誌,把它放在意圖中,所以如果「0」那麼它的startActivity或者「1」就是startActivityForResult ......這很簡單,不是嗎?
因爲你處理更多的數據比你真的需要這有點凌亂。 @PankajKumar下面的答案是最乾淨的答案。 – WarrenFaith
我認爲你應該在你的清單中暴露同一個活動的幾個意圖,然後測試調用意圖以適應你的行爲。
例在清單中的活動意圖過濾:
<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>
和相應的代碼在活動的onCreate:
if (getIntent().getAction().equals(Intent.ACTION_VIEW)) {
// do whatever you need to do here
} else if (getIntent().getAction().equals(Intent.ACTION_PICK)){
...
}
這也是一個gud方法 – Harinder
- 1. 活動調用StartActivityForResult
- 2. 使用startActivity的活動
- 3. 如何知道哪個活動調用了當前活動?
- 4. startActivityForResult某項活動
- 5. 如何知道7zip是否使用AES256?
- 6. Android如何知道用戶是否處於不活動狀態
- 7. 如何使用StartActivityForResult()
- 8. 如何知道某個類是否可以用作靜態類?
- 9. 如何知道我是否在使用使用Windows API的ARM?
- 10. 調用自定義活動爲startActivityForResult
- 11. 從活動環境外部調用startActivity()
- 12. DialogFragment崩潰調用startActivity()時的活動()
- 13. 如何知道我是否正在使用複製或移動?
- 14. 是否可以知道是否使用自動化工具
- 15. 當多個活動調用時,應用程序失敗startActivityForResult
- 16. 何時知道某個函數是否是回調函數?
- 17. 用startActivity調用第二個活動導致崩潰
- 18. 如何知道一個DLL是否使用ASLR?
- 19. 使用startActivityForResult,如何獲取子活動中的requestCode?
- 20. 如何知道用戶是否在線/使用解析登錄?
- 21. 如何知道用戶是否使用代理?
- 22. 如何知道用戶是否使用多臺顯示器
- 23. 我不知道我是否使用&&或||
- 24. 如何使用ListView Array調用活動
- 25. 如何使用ListView調用活動
- 26. 如何知道某個國家/地區是否正在使用使用JavaScript的夏令時?
- 27. 活動開始startActivityForResult()沒有返回調用活動
- 28. 如何知道遠端是否使用send系統調用關閉了socket?
- 29. 我不知道如何使用android偏好活動
- 30. 如何在調用startActivity時更新現有活動的意圖?
比通過意圖的國旗更清潔的解決方案...謝謝 – WarrenFaith
@WarrenFaith謝謝。 –
請注意,如果已啓動活動的活動啓動模式爲「singleTask」或「singleInstance」,或者以「FLAG_ACTIVITY_NEW_TASK」開頭,則getCallingActivity()將返回null。 – EpicPandaForce