如何替换Google Android基础课程中已废弃的startActivityForResult方法
替换方案:使用官方推荐的Activity Result API
步骤1:新增成员变量注册结果回调
在MainActivity类中,新增如下ActivityResultLauncher类型的成员变量,替代原有onActivityResult方法的逻辑:
// 注册Activity返回结果回调,替代原有onActivityResult方法 private ActivityResultLauncher<Intent> activityResultLauncher = registerForActivityResult( new ActivityResultContracts.StartActivityForResult(), result -> { // 此处写你原本在onActivityResult中的逻辑 if (result.getResultCode() == RESULT_OK) { Intent replyIntent = result.getData(); if (replyIntent != null) { String replyMessage = replyIntent.getStringExtra(SecondActivity.EXTRA_REPLY); // 显示返回的回复内容 mReplyHeadTextView.setVisibility(View.VISIBLE); mReplyTextView.setText(replyMessage); mReplyTextView.setVisibility(View.VISIBLE); } } } );
步骤2:替换原startActivityForResult调用
将你标注的startActivityForResult(intent, TEXT_REQUEST);这行代码直接替换为:
activityResultLauncher.launch(intent);
注意事项
- 原代码中定义的
TEXT_REQUEST请求码已经不需要再使用,可以删除 - 请确保项目依赖的
androidx.activity版本不低于1.2.0、androidx.fragment版本不低于1.3.0,否则无法正常使用该API - 原来重写的
onActivityResult方法如果没有其他用途,可以直接删除
内容的提问来源于stack exchange,提问作者Satendra Pal
相关产品推荐
相关产品推荐

