setResult 和 onActivityResult 如果是其他Activity调用没效果
时间: 2024-04-22 11:23:14 浏览: 148
是的,如果其他Activity调用setResult方法并且期望通过onActivityResult方法来接收结果,则该操作不会起作用。因为setResult方法是用于在当前Activity中设置结果并将其返回给启动当前Activity的Activity,而onActivityResult方法是用于接收由当前Activity返回的结果。如果其他Activity调用setResult方法,则当前Activity不会收到结果,因此onActivityResult方法也不会被触发。如果其他Activity需要访问当前Activity的结果,可以通过startActivityForResult方法启动当前Activity,并在当前Activity中设置结果,然后将结果返回给启动当前Activity的Activity。
相关问题
setresult onactivityresult
setResult和onActivityResult是Android中用于在不同Activity之间传递数据的方法。
setResult方法是在一个Activity中设置结果数据,以便之后的Activity可以获取到这些数据。它通常在当前Activity需要返回数据给上一个Activity时被调用。setResult方法接收两个参数,一个是resultCode,代表返回结果的状态码,另一个是Intent对象,用于传递返回数据。
onActivityResult方法是在目标Activity中接收返回结果数据的方法。当一个Activity通过startActivityForResult方法启动另一个Activity,并在另一个Activity中调用了setResult方法返回数据后,会自动触发onActivityResult方法来接收这些返回数据。onActivityResult方法接收三个参数,分别是requestCode,resultCode和data。其中requestCode是之前在启动Activity时自己定义的一个标识符,用于区分不同的启动请求;resultCode是被启动Activity通过setResult方法设置的结果状态码;data是被启动Activity通过setResult方法设置的Intent对象,其中包含传递的返回数据。
通过setResult和onActivityResult这两个方法,我们可以在不同Activity之间传递各种类型的数据,实现数据的共享和交互。在实际开发中,常用于从子Activity返回数据给父Activity,或者从其他Activity获取特定的结果数据。
Android 在自定义dialog 跳转到 Aactivity 里获取信息通过setResult传递信息 怎么在自定义dialog中使用 onActivityResult 方法获取传递的信息
在Android中,如果你想在自定义Dialog中启动一个新的Activity并通过`startActivityForResult()`方法传递数据,然后在Dialog外部接收这个结果,你需要做以下几个步骤:
1. **在Dialog中启动Activity**:
在自定义Dialog的点击事件或其他触发操作的地方,你可以创建一个新的Intent,并设置需要传递的数据,例如:
```java
Intent intent = new Intent(context, AActivity.class);
intent.putExtra("key", "你要传递的信息");
dialog.show(getFragmentManager(), "dialog_tag"); // 使用FragmentManager显示Dialog
startActivityForResult(intent, REQUEST_CODE); // 设置请求码,比如100
```
2. **设置请求码**:
确保你在启动Activity时设置了唯一的请求码,这会在`onActivityResult()`中作为标识。
3. **处理结果**:
在自定义Dialog之外的AActivity中,重写`onActivityResult()`方法来接收结果。通常你会在`onDestroyView()`或`onPause()`这样的生命周期回调中检查结果:
```java
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
String receivedData = data.getStringExtra("key"); // 从Intent中获取传递的信息
// 这里可以处理接收到的信息
}
}
```
4. **返回结果**:
如果在AActivity中处理完数据并想要关闭Activity返回结果,记得调用`finish()`方法,并且指定`RESULT_OK`表示成功。
```java
// 在AActivity完成操作后关闭自身并返回数据
finish();
```
阅读全文