因为不建议使用startActivityForResult。因此,我将startActivityForResult替换为registerForActivityResult
这是我的密码:
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();
}
}
});因为我调用了多个活动:
旧版本:
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);我们能发送和得到"requestCode“和"registerForActivityResult”吗?
发布于 2022-01-05 03:34:03
要么为每次启动创建一个新的ActivityResultLauncher,要么在启动活动时将您自己的标识符传递到一个包中。
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"
}
}
});发射活动
Intent myinten = new Intent(MainActivity.this, MainActivity2.class);
myinten.putExtra("requestCode", "SomeUniqueID");
someActivityResultLauncher.launch(myinten);返回的活动
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();https://stackoverflow.com/questions/70587235
复制相似问题