Android setResult时机的实现

在Android开发中,我们经常需要在一个Activity中启动另一个Activity,并且希望在第二个Activity结束后将结果传递回第一个Activity。这时就需要使用到setResult方法。本文将向你介绍如何在Android中实现setResult的使用。

流程图

下面是使用setResult方法的整个流程:

erDiagram
    participant 第一个Activity
    participant 第二个Activity

    第一个Activity -->> 第二个Activity: 启动
    第二个Activity -->> 第一个Activity: 设置结果

具体步骤

接下来,我们将详细介绍每一步需要做什么以及使用的代码:

  1. 在第一个Activity中,启动第二个Activity:
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
startActivityForResult(intent, requestCode);

这里使用了Intent来启动第二个Activity,并使用startActivityForResult方法代替普通的startActivity方法。startActivityForResult方法需要传入一个requestCode,用于标识这次启动的请求。

  1. 在第二个Activity中,设置结果并结束:
Intent intent = new Intent();
intent.putExtra(key, value);
setResult(resultCode, intent);
finish();

这里使用了Intent来存储需要传递回第一个Activity的数据,并调用setResult方法设置结果。setResult方法需要传入一个resultCode,用于标识结果的状态。然后调用finish方法结束第二个Activity的生命周期。

  1. 在第一个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时机"有所帮助。