在非activity类调用startActivityForResult
對于這個問題,今天折騰了一下午,不是說我不懂得怎么調(diào)用,而是我用了看似正確的調(diào)用方式,而其實這是一個坑。
我用了下面這種方式:
((Activity) mContext).startActivityForResult用這種方式是正確的,必須要將context轉(zhuǎn)換為Activity。
但是由于我是在一個特殊的場景里面使用的,導(dǎo)致activity的onActivityResult沒有被回調(diào)。
?
接下來說說我的場景:
我在MainActivity里面創(chuàng)建了一個DialogActivity,在DialogActivity里面調(diào)用工具類utils的start()方法,該方法里面的語句就是((Activity) mContext).startActivityForResult,而DialogActivity里面的onActivityResult沒有被回調(diào)。
?
調(diào)試了半天,發(fā)現(xiàn)DialogActivity傳進utils的start方法的context是屬于MainActivity的,因為DialogActivity在MainActivity里面啟動的。這么說來,相當于是MainActivity調(diào)用了startActivityForResult,應(yīng)該是MainAcvtivity的onActivityResult會被回調(diào),可是結(jié)果也不會。
?
原來MainAcvtivity與要啟動的Activity之間還隔著一個DialogActivity,返回的時候是返回到DialogActivity的,因此MainActivity的onActivityResult也不會被回調(diào)。
?
解決方法,不要傳context去調(diào)用,傳activity
總結(jié):((Activity) mContext).startActivityForResult,context屬于哪個Activity,那么便是哪個activity調(diào)用該方法,并且想要onActivityResult獲得回調(diào),兩個Activity之間不能隔著其他Activity。
?
尊重勞動成果,轉(zhuǎn)載請標明出處:http://www.cnblogs.com/tangZH/p/8575836.html
轉(zhuǎn)載于:https://www.cnblogs.com/tangZH/p/8575836.html
總結(jié)
以上是生活随笔為你收集整理的在非activity类调用startActivityForResult的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 面向B端市场,Mana VR团队将推出V
- 下一篇: PropertyPathFacoryBe