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

這個問題浪費了我很多時間,參考了網上的一些博客,找到了原因,在此感謝那些分享知識的好心人,感謝你們!

調用startActivityForResult後,onActivityResult立刻響應,原因如下:

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


找到的一些資料:(摘抄自http://www.byywee.com/page/M0/S776/776928.html)

從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方法。

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