startActivityForResult()
是 Android 平台上的一种启动 Activity 的方法,它允许启动一个 Activity 并在之后的某个时间点获取其结果。这个方法通常用于从一个 Activity 获取数据并返回到启动它的 Activity。
startActivityForResult()
方法允许你启动一个新的 Activity,并在新 Activity 结束时接收一个结果代码和一个 Intent 对象。这个 Intent 可以包含返回的数据。
以下是一个简单的示例,展示了如何使用 startActivityForResult()
:
// 在主 Activity 中
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivityForResult(intent, REQUEST_CODE);
// 在 SecondActivity 中
Intent resultIntent = new Intent();
resultIntent.putExtra("key", "value");
setResult(Activity.RESULT_OK, resultIntent);
finish();
// 在主 Activity 中重写 onActivityResult() 方法
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE && resultCode == Activity.RESULT_OK) {
String result = data.getStringExtra("key");
// 处理返回的数据
}
}
startActivityForResult()
和 onActivityResult()
方法。registerForActivityResult()
和 ActivityResultContracts
API。onActivityResult()
方法没有被调用startActivityForResult()
的使用方式有所变化。registerForActivityResult()
和 ActivityResultContracts
API 替代传统的 startActivityForResult()
方法。registerForActivityResult()
)// 在主 Activity 中
ActivityResultLauncher<Intent> activityResultLauncher = registerForActivityResult(
new ActivityResultContracts.StartActivityForResult(),
result -> {
if (result.getResultCode() == Activity.RESULT_OK) {
Intent data = result.getData();
String resultData = data.getStringExtra("key");
// 处理返回的数据
}
});
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
activityResultLauncher.launch(intent);
通过以上信息,你应该能够理解 startActivityForResult()
的基础概念、优势、类型、应用场景以及如何解决常见问题。
领取专属 10元无门槛券
手把手带您无忧上云