調用startActivityForResult後onActivityResult立刻響應,返回當前頁onActivityResult不響應的問題

這個問題開發中還是很常碰到,整理出來。

原因是在AndroidManifest.xml中的兩個activity或其中一個activity設置了android:launchMode="singleTask",因爲需要傳值的 兩個Activity不容許設置該屬性或者 singleInstance,或只能設爲標準模式,不然將在 startActivityForResult()後直接調用onActivityResult()。

SINGLE_TASK標識以及SINGLE_INSTANCE兩個標識必須在r.result==0的條件中,即這兩個標識只能用在startActivity()的方法中,而不能使用在startActivityForResult方法中。因爲從Task的角度看,Android認爲不同Task之間的Activity是不能傳遞數據的,所以不能使用NEW_TASK標識,但還是要調用forResult方法。

解決辦法:去掉跳轉到的頁面的launchMode屬性即可。另外,requestCode值必須要大於等於0,不然,startActivityForResult就變成了 startactivity。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章