Android startActivityForResult实例详解
一、startActivityForResult简介
在Android开发中,startActivityForResult是一种特殊的启动Activity的方法。与普通的startActivity不同,它允许启动的目标Activity在完成某些操作后返回结果给启动它的源Activity。
二、基本用法示例
- 源Activity中的操作
- 在源Activity中,首先需要定义一个请求码(request code),这个请求码是一个整数,用于标识这个启动操作。例如:
java private static final int REQUEST_CODE = 1; - 然后使用
startActivityForResult方法启动目标Activity:java Intent intent = new Intent(this, TargetActivity.class); startActivityForResult(intent, REQUEST_CODE); - 目标Activity中的操作
- 在目标Activity完成相关操作后,需要设置返回结果。例如,目标Activity中有一个按钮,点击按钮后返回结果:
java Button button = findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent resultIntent = new Intent(); resultIntent.putExtra("result_data", "这是返回的数据"); setResult(RESULT_OK, resultIntent); finish(); } }); - 源Activity对返回结果的处理
- 在源Activity中,需要重写
onActivityResult方法来接收和处理返回结果:java @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) { if (data!= null) { String result = data.getStringExtra("result_data"); // 在这里对返回的数据进行处理 } } }
三、注意事项
- 请求码的唯一性
- 请求码在源Activity中应该是唯一的,这样才能准确地区分不同的
startActivityForResult调用。 - 结果码的正确使用
- 除了
RESULT_OK(表示操作成功),还有RESULT_CANCELED(表示操作取消)等结果码可以根据实际情况在目标Activity中设置并在源Activity中进行相应的处理。 - 内存管理方面
- 如果目标Activity在返回结果之前被系统回收(例如由于内存不足),在
onActivityResult方法中需要注意对可能为null的Intent数据进行处理,并且目标Activity在恢复时也需要正确地重新设置返回结果。
本篇文章所含信息均从网络公开资源搜集整理,旨在为读者提供参考。尽管我们在编辑过程中力求信息的准确性和完整性,但无法对所有内容的时效性、真实性及全面性做出绝对保证。读者在阅读和使用这些信息时,应自行评估其适用性,并承担可能由此产生的风险。本网站/作者不对因信息使用不当或误解而造成的任何损失或损害承担责任。
