Android:相机 - registerForActivityResult onAcitivityResult 未被触发

问题描述 投票:0回答:1

我一直在试图找出为什么我的 onActivityResult 方法没有被调用。我正在尝试从 Fragment 启动相机,拍照并返回图片数据,以便我可以将其转换为 Base64 字符串并保存到数据库。

我在片段的 onCreateView 方法中定义了以下内容

takePhotoActivityResultLauncher = registerForActivityResult(
                new ActivityResultContracts.StartActivityForResult(),
                new ActivityResultCallback<ActivityResult>() {
            @Override
            public void onActivityResult(ActivityResult result) {
                 Log.d("TAG","WHY CANT I GET HERE!!");
            }
        });

...我正在使用此代码来启动意图

Intent pictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
takePhotoActivityResultLauncher.launch(pictureIntent);

谁能指出我到底做错了什么?我可以从相机中拍摄照片,但是当它返回到片段时,我在 onActivityResult 的 Logcat 中没有得到任何内容,并且日志中也没有错误。

android androidx android-camera-intent
1个回答
0
投票

引用文档

注意:您必须在创建片段或活动之前调用

registerForActivityResult()
,但在片段或活动的
ActivityResultLauncher
达到
Lifecycle
之前,您无法启动
CREATED

和:

由于重新创建流程和活动时结果回调需要可用,因此每次创建活动时都必须无条件注册回调,即使启动其他活动的逻辑仅基于用户输入或其他业务逻辑发生。

因此,这是一个问题:

我在片段的 onCreateView 方法中定义了以下内容

将其移动为片段的属性,通常定义为片段的顶部。例如,请参阅this

© www.soinside.com 2019 - 2024. All rights reserved.