startActivityForResult用法介绍
在Android开发中,startActivityForResult是一种用于启动一个Activity并等待其返回结果的方法,通过这种方法,我们可以在启动的Activity结束后获取其返回的数据,startActivityForResult方法通常与Intent一起使用,用于指定要启动的Activity以及需要传递的数据,下面我们详细介绍一下startActivityForResult的用法。
1、创建Intent对象
我们需要创建一个Intent对象,用于指定要启动的Activity,在创建Intent对象时,我们需要设置一些属性,如action、data、category等,这些属性可以帮助我们在启动Activity时传递一些额外的信息。
Intent intent = new Intent(this, TargetActivity.class); intent.setAction("com.example.ACTION_START"); intent.putExtra("key", "value");
2、启动Activity
接下来,我们需要使用startActivityForResult方法启动目标Activity,在调用此方法时,我们需要传入两个参数:第一个参数是要启动的Activity的实例;第二个参数是一个整数,用于标识返回结果的请求代码,当目标Activity结束时,系统会将返回的结果发送回调用方,我们可以通过onActivityResult方法来接收这些结果。
startActivityForResult(intent, REQUEST_CODE);
3、处理返回结果
当目标Activity结束并返回结果时,系统会将结果发送回调用方,这时,我们需要重写onActivityResult方法来处理这些返回的结果,在onActivityResult方法中,我们需要传入两个参数:第一个参数是启动目标Activity时传入的请求代码;第二个参数是返回的结果,根据这两个参数,我们可以判断返回的结果是由哪个请求代码触发的,并进行相应的处理。
@Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_CODE) { if (resultCode == RESULT_OK) { // 处理成功返回的结果 } else { // 处理失败返回的结果 } } }
4、在其他Activity中启动目标Activity并等待返回结果
除了在当前Activity中启动目标Activity外,我们还可以在其他Activity中启动目标Activity并等待其返回结果,这时,我们需要在启动目标Activity时传入相同的请求代码和目标Activity的实例,当目标Activity结束并返回结果时,系统会将结果发送回调用方,我们的onActivityResult方法会接收到这些结果并进行处理。
相关问题与解答
1、startActivityForResult的请求代码的作用是什么?
答:请求代码是一个整数,用于标识不同的启动请求,当我们需要同时处理多个启动请求时,可以通过不同的请求代码来区分它们,这样,在onActivityResult方法中,我们可以根据请求代码来判断返回的结果是由哪个请求触发的。
2、如果目标Activity没有返回任何数据怎么办?
答:如果目标Activity没有返回任何数据,那么onActivityResult方法中的data参数将为null,在这种情况下,我们无法从data参数中获取到任何信息,为了避免这种情况,我们可以在创建Intent对象时设置数据的可选性,或者在onActivityResult方法中检查data参数是否为null。
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/223224.html