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

鴨脖發表於2015-05-12

參考了網上的一些部落格,找到了原因,在此感謝那些分享知識的好心人。

原因是在AndroidManifest.xml 中跳轉到的頁面我自己設定了android:launchMode="singleTask",因為需要傳值的 Activity 不容許設定該屬性或者 singleInstance,或只能設為標準模式,不然將在 startActivityForResult()後直接呼叫 onActivityResult()。
解決辦法:去掉跳轉到的頁面的lanchMode屬性即可。
另外,requestCode值必須要大於等於0,不然,startActivityForResult就變成了 startactivity。


找到的一些資料:(摘抄自http://aijiawang-126-com.iteye.com/blog/1717326)

從SDK我們可以看到如下深奧的解釋:http://developer.android.com/guide/topics/manifest/activity-element.html#lmode 
The other modes — singleTask and singleInstance — are not appropriate for most applications, since they result in an interaction model that is likely to be unfamiliar to users and is very different from most other applications. 
從柯元旦的《Android 核心剖析》的第十章“Ams內部原理“10.1.3中有這樣的一段話:請注意:SINGLE_TASK標識以及SINGLE_INSTANCE兩個標識必須在r.result==0的條件中,即這兩個標識只能用在startActivity()的方法中,而不能使用在startActivityForResult方法中。因為從Task的角度看,Android認為不同Task之間的Activity是不能傳遞資料的,所以不能使用NEW_TASK標識,但還是要呼叫forResult方法。


相關文章