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