前言
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等方法。如有疑問請留言。