onActivityResult
是 Android 平台中的一个方法,用于处理从启动的 Activity 返回的结果。当一个 Activity 启动另一个 Activity 并期望得到结果时,会使用 startActivityForResult
方法。当被启动的 Activity 结束并返回结果时,会调用 onActivityResult
方法。
startActivityForResult
启动一个 Activity 时,可以传递一个整数类型的 requestCode
。这个码用于标识请求的来源,以便在 onActivityResult
中区分不同的结果。Activity.RESULT_OK
或 Activity.RESULT_CANCELED
),表示操作是否成功。Intent
传递数据回原来的 Activity。requestCode
处理不同的结果。Activity.RESULT_OK
和 Activity.RESULT_CANCELED
。如果 onActivityResult
未接收到 requestCode
,可能是以下原因:
registerForActivityResult
) 替代传统的 startActivityForResult
。如果你的应用目标 API 级别是 30 或以上,onActivityResult
将不会被调用。startActivityForResult
方法启动 Activity,并且正确传递了 requestCode
。onActivityResult
不被调用。确保在正确的生命周期方法中处理结果。// 在 Activity 中注册
ActivityResultLauncher<Intent> activityResultLauncher = registerForActivityResult(
newActivityResultContracts.StartActivityForResult(),
result -> {
if (result.getResultCode() == Activity.RESULT_OK) {
Intent data = result.getData();
// 处理返回的数据
}
});
// 启动 Activity
Intent intent = new Intent(this, AnotherActivity.class);
activityResultLauncher.launch(intent);
参考链接: Android 官方文档 - 使用 Activity Result API
startActivityForResult
方法,并传递 requestCode
。Intent intent = new Intent(this, AnotherActivity.class);
int requestCode = 123; // 自定义请求码
startActivityForResult(intent, requestCode);
onActivityResult
方法中正确处理结果,并且在 Activity 的生命周期方法中调用 super.onActivityResult(requestCode, resultCode, data)
。@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// 处理返回的结果
}
通过以上方法,可以解决 onActivityResult
未传递 requestCode
的问题。
领取专属 10元无门槛券
手把手带您无忧上云