解決在fragment中不響應onActivityResult()方法

前言

Android項目Android studio環境:

    1、工程build.gradle版本號:3.2.1

    2、app目錄下的build.gradle配置:compileSdkVersion 28                                                              

                                                             minSdkVersion 16 

                                                             targetSdkVersion 28

測試機型:魅藍note2    android5.1.1

                  華爲榮耀暢玩7x   android8.0.0

 

一、需求需要宿主activity+3個fragment實現頁面,其中有一個fragment需要調用手機原生相機,此時就需要在fragment響應onActivityResult()方法。

(1)在宿主activity中先重寫onActivityResult()方法,並且讓子fragment回調onActivityResult()方法,宿主activity的代碼如下:


    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        getSupportFragmentManager().getFragments();
        if (getSupportFragmentManager().getFragments().size() > 0) {
            List<Fragment> fragments = getSupportFragmentManager().getFragments();
            for (Fragment mFragment : fragments) {
                mFragment.onActivityResult(requestCode, resultCode, data);
            }
        }
    }

(2)在宿主activity中準備好方法之後,子fragment中就按照平常正常重寫onActivityResult()方法,在裏面寫你所需要的內容即可。fragment的代碼如下:

 @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == Activity.RESULT_OK) {
            switch (requestCode) {
                case IDCardCamera.TYPE_IDCARD_FRONT:
                    final String path = IDCardCamera.getImagePath(data);
                    idCardFrontImageData = ImageToBase64.fileBase64String(path);
                    Log.i("image<<0", idCardFrontImageData);
                    ivIDCardBack.setImageBitmap(BitmapFactory.decodeFile(path));
                    Log.i("imagePath", path);
                    break;
            }
        }
    }

 

二、親測有效。當然也可以使用rxjava、eventbus等方法。如有疑問請留言。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章