調用startActivityForResult後,onActivityResult馬上響應,返回當

調用startActivityForResult後,onActivityResult馬上響應,返回當前頁,有須要的朋友能夠參考下。php


這個問題浪費了我不少時間,參考了網上的一些博客,找到了緣由,在此感謝那些分享知識的好心人,感謝大家!html

調用startActivityForResult後,onActivityResult馬上響應,緣由以下:android

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


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

從SDK咱們能夠看到以下深奧的解釋:http://developer.android.com/guide/topics/manifest/activity-element.html#lmode
The other modes — singleTask and singleInstance — are not appropriate for mostapplications, 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方法。ui

相關文章
相關標籤/搜索