1. 程式人生 > >Android中Fragment中onActivityResult不被呼叫的解決方案

Android中Fragment中onActivityResult不被呼叫的解決方案

    android開發中,Fragment+ViewPager已經很常見了。其實遇到這個問題,其實挺尷尬的,我相信有很多小夥伴都遇到這個問題。我也在網上找了很多資料,說什麼是android原生的問題,程式設計師偷懶了,沒有處理這個事件分發等。

指錢看過這位仁兄的文章,試了試,可惜不管用。提示getParentFragment();為null哎……放棄了。

    然後我看到一個方法,但是很抱歉,忘記記下那位博主的連結了,在這裡對這位博主說聲抱歉。集體的方法呢,一起來看看吧

首先在FragmentAvtivity中 onActivityResult(...)方法中,呼叫 pagerAdapter.getItem(n).onAvtivityResult(...)

方法;

其中,getItem()引數就是你的第某一個Fragment

 @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        mPagerAdapter.getItem(1).onActivityResult(requestCode, resultCode, data);
    }

然後在Fragment中的onActivityResult(...)方法中,就可以響應了,是不是很神奇。。。

到這裡你以為就完吧,哈哈哈,沒錯,這世間就是有太多的出人意料。

怎麼可以能這就完了,不信你試試。

哈哈哈,是不是拿不到資料,都是null?

好了,下面這部寫法很重要,fragment啟動activity的時候,要這麼寫,fragment.startAvtivityForResult(intent,RESULT_FIRST_USER);

mFragment.startActivityForResult(intent, RESULT_FIRST_USER);

沒錯,就是這個引數,什麼意思呢哈,字面意思啊“結果第一個使用者”,就是這麼個意思,明白就好。

好了,完成這一步,再試一下,是不是有資料了啊,是不是感覺又回到了兩個Avtivity之間跳轉的感覺啊,沒錯,你的感覺是對的,這就真的完成了。不信你試試。