首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我们能发送和得到"requestCode“和"registerForActivityResult”吗?

我们能发送和得到"requestCode“和"registerForActivityResult”吗?
EN

Stack Overflow用户
提问于 2022-01-05 02:42:25
回答 1查看 2.9K关注 0票数 7

因为不建议使用startActivityForResult。因此,我将startActivityForResult替换为registerForActivityResult

这是我的密码:

代码语言:javascript
复制
ActivityResultLauncher<Intent> someActivityResultLauncher = registerForActivityResult(
            new ActivityResultContracts.StartActivityForResult(),
            new ActivityResultCallback<ActivityResult>() {
                @Override
                public void onActivityResult(ActivityResult result) {
                    if (result.getResultCode() == Activity.RESULT_OK) {
                        // There are no request codes
                        //Intent data = result.getData();
                        //doSomeOperations();
                    }
                }
            });

因为我调用了多个活动:

旧版本:

代码语言:javascript
复制
 Intent myinten = new Intent(MainActivity.this, MainActivity2.class);
 startActivityForResult(myinten, 111);

Intent myinten = new Intent(MainActivity.this, MainActivity3.class);
startActivityForResult(myinten, 222);

新版本:

代码语言:javascript
复制
Intent myinten = new Intent(MainActivity.this, MainActivity2.class);
someActivityResultLauncher.launch(myinten);

Intent myinten = new Intent(MainActivity.this, MainActivity3.class);
someActivityResultLauncher.launch(myinten);

我们能发送和得到"requestCode“和"registerForActivityResult”吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-05 03:34:03

要么为每次启动创建一个新的ActivityResultLauncher,要么在启动活动时将您自己的标识符传递到一个包中。

代码语言:javascript
复制
 ActivityResultLauncher<Intent> someActivityResultLauncher = registerForActivityResult(
            new ActivityResultContracts.StartActivityForResult(),
            new ActivityResultCallback<ActivityResult>() {
                @Override
                public void onActivityResult(ActivityResult result) {
                    if (result.getResultCode() == Activity.RESULT_OK) {
                        Intent intent = result.getData();
                        //get your "requestCode" here with switch for "SomeUniqueID"
                    }
                }
            });

发射活动

代码语言:javascript
复制
Intent myinten = new Intent(MainActivity.this, MainActivity2.class);
myinten.putExtra("requestCode", "SomeUniqueID");
someActivityResultLauncher.launch(myinten);

返回的活动

代码语言:javascript
复制
Intent intent = new Intent();
//these should not be hard coded, but retrieved from the intent which created this activity
intent.putExtra("requestCode", "SomeUniqueID");
activity.setResult(Activity.RESULT_OK, intent);
activity.finish();
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70587235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档