0
点赞
收藏
分享

微信扫一扫

android activity setresult 调用时机

笑望叔叔 2024-11-06 阅读 10

Android Activity setResult 调用时机详解

一、概述

在Android开发中,当我们启动一个Activity时,常常会需要从这个Activity返回一些结果数据给调用它的Activity。为了实现这一点,我们使用setResult()方法。本文将讲解setResult()的调用时机及其具体实现步骤,并通过示例代码加以解释。

以下是整个流程的概述:

步骤 描述
1 启动目标Activity
2 在目标Activity中处理数据
3 调用setResult()设置结果
4 调用finish()结束当前Activity
5 在调用者Activity中接收结果

二、每一步的实现

1. 启动目标Activity

在调用者Activity中,我们需要启动目标Activity。可以使用startActivityForResult()方法:

Intent intent = new Intent(this, TargetActivity.class); // 创建Intent以启动目标Activity
startActivityForResult(intent, REQUEST_CODE); // 启动目标Activity并请求结果

其中,REQUEST_CODE是一个唯一的整数,用于标识请求。

2. 在目标Activity中处理数据

在目标Activity中,我们可以通过向用户展示一个界面,让他们输入数据,例如:

<!-- activity_target.xml -->
<EditText
android:id=@+id/editTextResult
android:layout_width=match_parent
android:layout_height=wrap_content
android:hint=输入结果 />

<Button
android:id=@+id/buttonOK
android:layout_width=wrap_content
android:layout_height=wrap_content
android:text=确定 />

接下来,我们需要在目标Activity的逻辑代码中获取用户输入的数据。

3. 调用 setResult() 设置结果

当用户点击“确定”按钮时,我们需要获取输入框中的数据,并通过setResult()方法将数据传回发送者:

// 目标Activity的代码
Button buttonOK = findViewById(R.id.buttonOK);
EditText editTextResult = findViewById(R.id.editTextResult);

buttonOK.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String result = editTextResult.getText().toString(); // 获取用户输入的结果
Intent returnIntent = new Intent(); // 创建一个Intent用于返回数据
returnIntent.putExtra(result, result); // 将结果放入Intent中
setResult(Activity.RESULT_OK, returnIntent); // 设置结果为RESULT_OK
finish(); // 关闭当前Activity
}
});

4. 调用 finish() 结束当前 Activity

调用finish()方法可以结束当前Activity,并返回到调用者Activity中。

5. 在调用者 Activity 中接收结果

最后,在调用者Activity中,我们可以重写onActivityResult()方法来接收目标Activity返回的结果:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data); // 调用父类方法
if (requestCode == REQUEST_CODE && resultCode == Activity.RESULT_OK) {
String result = data.getStringExtra(result); // 从Intent中获取返回的结果
// 处理结果,比如显示到界面上
Toast.makeText(this, 返回结果: + result, Toast.LENGTH_SHORT).show(); // 显示结果
}
}

三、关系图

以下是用于展示Activity之间关系的示意图:

erDiagram
ActivityA ||--o{ ActivityB : start
ActivityB ||--|| ActivityA : finish

四、总结

通过以上步骤,我们详细讲解了如何在Android中使用setResult()来实现Activity之间的数据交互。整个流程从启动目标Activity,到用户输入的数据处理,再到返回结果的设置,最后是接收返回的数据,每一步都有其重要性。

使用setResult()方法时特别注意调用时机,确保在处理完数据后再结束目标Activity,避免空返回或数据丢失。希望你能通过以上示例代码及说明理解setResult()的使用,并在实际项目中灵活应用。如果在实现过程中遇到任何问题,不妨回过头来查阅本文或参考Android官方文档。祝你在Android开发的旅程中取得成功!

举报

相关推荐

0 条评论