gpt4 book ai didi

android - 我们可以用 "requestCode"发送和获取 "registerForActivityResult"吗?

转载 作者:行者123 更新时间:2023-12-04 23:47:49 25 4
gpt4 key购买 nike

因为startActivityForResult已弃用。
所以我替换 startActivityForResultregisterForActivityResult这是我的代码:

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();
}
}
});
因为我调用多 Activity :
旧版:
 Intent myinten = new Intent(MainActivity.this, MainActivity2.class);
startActivityForResult(myinten, 111);

Intent myinten = new Intent(MainActivity.this, MainActivity3.class);
startActivityForResult(myinten, 222);
新版本:
Intent myinten = new Intent(MainActivity.this, MainActivity2.class);
someActivityResultLauncher.launch(myinten);

Intent myinten = new Intent(MainActivity.this, MainActivity3.class);
someActivityResultLauncher.launch(myinten);
我们可以使用“registerForActivityResult”发送和获取“requestCode”吗?

最佳答案

为每次启动创建一个新的 ActivityResultLauncher,或者在启动 Activity 时在包中传递您自己的标识符。

 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"
}
}
});
启动 Activity

Intent myinten = new Intent(MainActivity.this, MainActivity2.class);
myinten.putExtra("requestCode", "SomeUniqueID");
someActivityResultLauncher.launch(myinten);


返回的 Activity
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();

关于android - 我们可以用 "requestCode"发送和获取 "registerForActivityResult"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70587235/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com