ActivityResultLauncher获取Activity返回数据

本文介绍了AndroidX框架中的ActivityResultLauncher,一种新的API,用于简化以前的startActivityForResult方法。它通过注册contract和ActivityResultCallback来启动和接收活动结果,提供更直观的流程管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ActivityResultLauncher(活动结果启动器)是 Android 中用于启动活动并接收结果的新 API。它是在 AndroidX 框架中引入的,用于简化之前使用 startActivityForResult()方法的流程。

在使用 ActivityResultLauncher 之前,你需要选择适当的合同contract),例如 StartActivityForResult合同,然后通过registerForActivityResult()方法创建一个ActivityResultLauncher对象。这个对象负责启动活动并在活动完成后接收结果。

// 在Activity1中调用

// 创建ActivityResultLauncher对象
ActivityResultLauncher<Intent> activityResultLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), 
        new ActivityResultCallback<ActivityResult>() {
            public void onActivityResult(ActivityResult result) {
                if (result.getResultCode() == Activity.RESULT_OK) {
                    // 处理成功的结果
                    Intent data = result.getData();
                     // 处理 data 中的数据
                } else {
                     // 处理取消或失败的情况
                }
            }
        });

// 启动Activity并等待结果
Intent intent=new Intent(MainActivity.this,SecondActivity.class);
activityResultLauncher.launch(intent);
// 在Activity2中调用

// 设置Result数据
Intent resultData=new Intent();
setResult(12345,resultData);

// Activity关闭时,Result数据才会被返回
SecondActivity.this.finish();

 下面展示被取代的 startActivityForResult()方法

// 在Activity1中调用

// 重写onActivityResult方法用于接收Result数据
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode==2333&&resultCode==12345){
        //处理返回数据data
    }
}

// 使用startActivityForResult方法启动Activity
Intent intent=new Intent(MainActivity.this,SecondActivity.class);
startActivityForResult(intent,2333);
// 在Activity2中调用

// 设置Result数据
Intent resultData=new Intent();
setResult(12345,resultData);

// Activity关闭时,Result数据才会被返回
SecondActivity.this.finish();

tag:ActivityResultLauncher ,ActivityResultContracts,ActivityResultCallback,result,Intent,startActivityForResult,startActivity,活动,activity,Result

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

在下嗷呜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值