onactivityresult使用
时间: 2023-05-02 12:03:01 浏览: 59
onActivityResult是一个Android Activity的方法,用于在一个Activity与另一个Activity进行交互时,接收另一个Activity返回的数据。通常情况下,我们使用startActivityForResult方法启动一个新的Activity,当新的Activity结束时,会将结果返回到原来的Activity的onActivityResult方法中。这个方法通常会传递3个参数,分别表示请求码、结果码和数据,我们可以在这个方法中对这些参数进行处理。
相关问题
onActivityResult 使用无效
`onActivityResult` 是用于获取其他 Activity 返回的结果的方法,可以在当前 Activity 中重写该方法来获取返回的数据。如果你发现 `onActivityResult` 使用无效,可能是以下原因:
1. 没有正确设置请求码(requestCode):在调用 `startActivityForResult` 启动另一个 Activity 时,需要传入一个请求码,用于标识该请求。在 `onActivityResult` 中可以根据请求码来判断返回的结果是否为该请求的结果。如果设置的请求码不正确,可能导致返回的结果无法正确处理。建议使用常量来定义请求码,避免出现不同的请求码导致问题。
2. 没有正确设置返回结果(resultCode):在另一个 Activity 中处理完相关逻辑后,需要通过 `setResult` 方法设置返回结果。如果没有正确设置返回结果,可能导致 `onActivityResult` 接收不到任何数据。
3. 另一个 Activity 没有正确返回结果:在另一个 Activity 中处理完相关逻辑后,需要通过 `setResult` 方法设置返回结果,并调用 `finish` 方法来关闭 Activity。如果没有正确返回结果,可能导致 `onActivityResult` 接收不到任何数据。
4. `onActivityResult` 中的代码有误:如果 `onActivityResult` 中的代码有误,可能导致无法正确处理返回的数据。建议检查 `onActivityResult` 中的代码是否正确,是否存在语法错误等问题。
如果以上步骤都检查过了,但是仍然无法使用 `onActivityResult`,可以尝试使用 `startActivity` 方法来启动另一个 Activity,然后在返回时使用 `onNewIntent` 方法来获取返回的数据。
如何使用onActivityResult
onActivityResult 是 Android 中的一个方法,用于在 Activity 之间传递数据。它通常与 startActivityForResult 一起使用,用于在子 Activity 中完成某个操作后,返回数据给调用它的父 Activity。
具体使用步骤如下:
1. 在父 Activity 中使用 startActivityForResult 启动子 Activity,传递请求码和数据(可选)。
```java
Intent intent = new Intent(this, ChildActivity.class);
intent.putExtra("data", "Hello");
startActivityForResult(intent, 1);
```
2. 在子 Activity 中完成某个操作后,设置要返回的数据,并使用 setResult 方法将数据返回给父 Activity。
```java
Intent intent = new Intent();
intent.putExtra("result", "World");
setResult(RESULT_OK, intent);
finish();
```
3. 在父 Activity 中重写 onActivityResult 方法,获取子 Activity 返回的数据。
```java
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1 && resultCode == RESULT_OK) {
String result = data.getStringExtra("result");
// 处理返回的数据
}
}
```
注意:子 Activity 返回数据时必须使用 setResult 方法,否则 onActivityResult 方法不会被调用。同时,requestCode 必须与启动子 Activity 时传递的请求码一致,resultCode 代表子 Activity 的返回状态,通常使用 RESULT_OK 表示操作成功,data 代表返回的数据。