這個問題開發中還是很常碰到,整理出來。
原因是在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。