You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Android的Activity中如何获取并初始化ActivityResultRegistry引用?

解决方案

AppCompatActivity的父类ComponentActivity已经内置了ActivityResultRegistry实例,你不需要自己手动初始化,直接调用getActivityResultRegistry()方法即可获取,甚至绝大多数场景下你连显式传入这个参数都不需要。


常规用法(推荐)

直接使用双参数的registerForActivityResult重载方法,系统会自动使用当前Activity的内置Registry,不需要额外声明成员变量存储Registry实例:

public class MainActivity extends AppCompatActivity {
    // 直接作为成员变量注册,触发拍照后回调拿到缩略图
    private final ActivityResultLauncher<Void> mTakePicture =
            registerForActivityResult(new TakePicturePreview(), new ActivityResultCallback<Bitmap>() {
                @Override
                public void onActivityResult(Bitmap thumbnail) {
                    mThumbnailLiveData.setValue(thumbnail);
                }
            });

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 需要触发拍照时调用即可
        // mTakePicture.launch(null);
    }
}

显式传入Registry的用法

如果你的场景确实需要手动指定Registry参数,直接调用系统提供的实例传入即可:

public class MainActivity extends AppCompatActivity {
    // 直接获取系统内置的Registry实例即可,不需要自己创建
    private final ActivityResultRegistry activityResultRegistry = getActivityResultRegistry();

    private final ActivityResultLauncher<Void> mTakePicture =
            registerForActivityResult(new TakePicturePreview(), activityResultRegistry, new ActivityResultCallback<Bitmap>() {
                @Override
                public void onActivityResult(Bitmap thumbnail) {
                    mThumbnailLiveData.setValue(thumbnail);
                }
            });
}

注意事项

  • 不要自己手动new ActivityResultRegistry()创建实例,该实例由系统负责管理生命周期,自行创建会导致回调失效
  • ActivityResultLauncher的注册操作必须在Activity生命周期走到STARTED状态之前完成,推荐直接作为类成员变量初始化,或者在onCreate方法的super.onCreate()调用之前完成注册,否则会抛出异常

内容的提问来源于stack exchange,提问作者paulsm4

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 16:27:04