Android的startActivityForResult简介
startActivityForResult
是Android中用于启动一个Activity并返回结果的方法,当用户在一个Activity中启动另一个Activity时,可以通过startActivityForResult
方法将结果传递回原来的Activity,这样可以实现在不同的Activity之间传递数据,提高用户体验。
使用方法
1、创建一个Intent对象,用于指定要启动的Activity。
Intent intent = new Intent(this, TargetActivity.class);
2、为Intent添加额外的数据,以便在启动目标Activity后将其传递回原始Activity,这可以通过putExtra
方法实现。
intent.putExtra("key", "value");
3、使用startActivityForResult
方法启动目标Activity,该方法需要两个参数:第一个参数是要启动的Activity的Class对象,第二个参数是一个整数,用于标识启动的模式,通常情况下,我们使用START_ACTIVITY_FORWARD
作为第二个参数。
startActivityForResult(intent, requestCode);
4、在目标Activity执行完操作后,通过setResult
方法将结果返回给原始Activity,这需要在目标Activity的onActivityResult
方法中实现。
Intent resultIntent = new Intent(); resultIntent.putExtra("key", "newValue"); setResult(RESULT_OK, resultIntent); finish();
5、在原始Activity中重写onActivityResult
方法,以处理从目标Activity返回的结果,该方法需要三个参数:上下文(通常是当前的Activity),请求码(与启动目标Activity时使用的请求码相同)和一个包含返回结果的Intent对象。
@Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == requestCode && resultCode == RESULT_OK) { String value = data.getStringExtra("key"); // 处理返回的数据 } }
相关问题与解答
1、如何获取从目标Activity返回的数据?
答:onActivityResult
方法中的第三个参数(Intent对象)包含了从目标Activity返回的数据,可以通过调用getStringExtra
、getIntExtra
等方法来获取相应的数据。
String value = data.getStringExtra("key");
2、startActivityForResult的请求码是如何生成的?
答:请求码是在启动一个新的Activity时由系统自动生成的一个整数值,通常情况下,我们可以使用一个静态变量来生成唯一的请求码,
private static final int REQUEST_CODE = 1;
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/180211.html