對於這個問題,今天折騰了一下午,不是說我不懂得怎麼調用,而是我用了看似正確的調用方式,而其實這是一個坑。 我用了下麵這種方式: 用這種方式是正確的,必須要將context轉換為Activity。 但是由於我是在一個特殊的場景裡面使用的,導致activity的onActivityResult沒有被回調 ...
對於這個問題,今天折騰了一下午,不是說我不懂得怎麼調用,而是我用了看似正確的調用方式,而其實這是一個坑。
我用了下麵這種方式:
((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