Android setResult时机的实现
在Android开发中,我们经常需要在一个Activity中启动另一个Activity,并且希望在第二个Activity结束后将结果传递回第一个Activity。这时就需要使用到setResult方法。本文将向你介绍如何在Android中实现setResult的使用。
流程图
下面是使用setResult方法的整个流程:
erDiagram
participant 第一个Activity
participant 第二个Activity
第一个Activity -->> 第二个Activity: 启动
第二个Activity -->> 第一个Activity: 设置结果
具体步骤
接下来,我们将详细介绍每一步需要做什么以及使用的代码:
- 在第一个Activity中,启动第二个Activity:
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
startActivityForResult(intent, requestCode);
这里使用了Intent来启动第二个Activity,并使用startActivityForResult方法代替普通的startActivity方法。startActivityForResult方法需要传入一个requestCode,用于标识这次启动的请求。
- 在第二个Activity中,设置结果并结束:
Intent intent = new Intent();
intent.putExtra(key, value);
setResult(resultCode, intent);
finish();
这里使用了Intent来存储需要传递回第一个Activity的数据,并调用setResult方法设置结果。setResult方法需要传入一个resultCode,用于标识结果的状态。然后调用finish方法结束第二个Activity的生命周期。
- 在第一个Activity中,处理返回的结果:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == requestCode) {
if (resultCode == Activity.RESULT_OK) {
// 处理成功的逻辑
String result = data.getStringExtra(key);
// ...
} else if (resultCode == Activity.RESULT_CANCELED) {
// 处理取消的逻辑
// ...
}
}
}
在第一个Activity中重写onActivityResult方法,根据requestCode和resultCode来判断返回的结果。如果resultCode为Activity.RESULT_OK,则表示处理成功,可以通过Intent的getExtra方法获取数据。如果resultCode为Activity.RESULT_CANCELED,则表示取消操作。
以上就是使用setResult方法的完整流程和代码实现。
总结
在Android开发中,使用setResult方法可以很方便地将结果传递回上一个Activity。需要注意的是,在第二个Activity中设置结果后,需要调用finish方法结束Activity的生命周期。然后在第一个Activity中重写onActivityResult方法来处理返回的结果。
希望本文对你理解和实现"android setResult时机"有所帮助。