或者我應該在意圖中發送一些額外的數據來了解這個呼叫嗎?如果沒有預定義的方法,如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. startActivity()總是調用startActivityForResult()嗎?
- 2. 活動調用StartActivityForResult
- 3. 如何知道UserControl是否活動,而不是使用IsFocused
- 4. startActivity調用第一個在startActivityForResult之後調用的調用
- 5. 使用startActivity的活動
- 6. 如何知道哪個活動調用了當前活動?
- 7. 知道Windows用戶是否活動
- 8. startActivityForResult某項活動
- 9. 如何知道是否使用ASCII碼?
- 10. 如何知道7zip是否使用AES256?
- 11. startactivity方法是否調用onCreate方法的預期活動?
- 12. Android如何知道用戶是否處於不活動狀態
- 13. 如何使用StartActivityForResult()
- 14. 監控使用startActivity開始的活動()
- 15. 如何知道某個類是否可以用作靜態類?
- 16. 如何知道我是否在使用使用Windows API的ARM?
- 17. 如何在startActivityForResult()之前啓動startActivity()
- 18. 如何測試是否使用nmock3調用某個方法?
- 19. 調用自定義活動爲startActivityForResult
- 20. 活動狀態調用startActivity(意圖)
- 21. 從活動環境外部調用startActivity()
- 22. DialogFragment崩潰調用startActivity()時的活動()
- 23. 如何知道我是否正在使用複製或移動?
- 24. Facebook - 如何知道用戶是否使用應用程序?
- 25. 是否可以知道是否使用自動化工具
- 26. 何時知道某個函數是否是回調函數?
- 27. 如何知道x264是否使用多個處理器Windows
- 28. 如何知道一個DLL是否使用ASLR?
- 29. 當多個活動調用時,應用程序失敗startActivityForResult
- 30. 用startActivity調用第二個活動導致崩潰
比通過意圖的國旗更清潔的解決方案...謝謝 – WarrenFaith
@WarrenFaith謝謝。 –
請注意,如果已啓動活動的活動啓動模式爲「singleTask」或「singleInstance」,或者以「FLAG_ACTIVITY_NEW_TASK」開頭,則getCallingActivity()將返回null。 – EpicPandaForce