提示: onActivityResult 为活动基类Activity中的方法,用于获得子活动返回的数据,需要配合子活动的setResult和finish方法使用。那么onActivityResult 是在什么时候调用的呢,三者之间什么关系呢?
一、相关代码:
由此可见,setResult需在finish方法之前调用,用来设置返回数据,其关键在finish方法委托ActivityManagerNative.getDefault().finishActivity() 做内存回收、事件触发等工作。finish方法完全可以重载,resultCode 和resultData做为入参,Google的工程师也许是想代码更清晰吧,而且给setResult留有可扩展的余地。
public final void setResult(int resultCode) {
synchronized (this) {
mResultCode = resultCode;
mResultData = null;
}
}
public void finish() {
if (mParent == null) {
int resultCode;
Intent resultData;
synchronized (this) {
resultCode = mResultCode;
resultData = mResultData;
}
if (Config.LOGV) Log.v(TAG, "Finishing self: token=" + mToken);
try {
if (ActivityManagerNative.getDefault()
.finishActivity(mToken, resultCode, resultData)) {
mFinished = true;
}
} catch (RemoteException e) {
// Empty
}
} else {
mParent.finishFromChild(this);
}
}
分享到:
相关推荐
当子Activity启动另一个Activity并期待返回结果时,这个结果通常由`onActivityResult()`方法处理。然而,在`ActivityGroup`里,子Activity的`onActivityResult()`不会被调用。这是由于`ActivityGroup`作为父Activity...
onActivityResult 是 Android 中的一个回调函数,由系统自动调用,用于处理子活动返回的数据。当我们从一个活动启动另一个活动时,新的活动完成后会返回到原来的活动,这时就会触发 onActivityResult 函数。 二、为...
在Android应用开发中,`onActivityResult` 是一个关键的方法,用于处理从启动的Activity返回的结果。这个方法在当你启动一个Activity来执行特定任务(比如选择图片、拍摄照片或获取地理位置等),并期望得到一个返回...
在Android应用开发中,`onActivityResult` 是一个关键的方法,用于处理从一个Activity启动另一个Activity后返回的结果。这个方法在父Activity(启动另一个Activity的Activity)中定义,当子Activity结束并返回数据时...
在Android应用程序开发中,`onActivityResult()` 和 `setResult()` 方法是两个非常关键的组件,它们用于在不同的Activity之间传递数据和控制流程。当我们需要从一个Activity启动另一个Activity并期待返回结果时,这...
在Android开发中,`OnActivityResult`是用于处理Activity之间数据交互的重要机制。当一个Activity启动另一个Activity并期望得到结果时,通常会使用`startActivityForResult()`方法,然后在被启动的Activity中通过`...
之前遇到了onActivityResult提前调用的问题,说是和activity的启动模式有关,就做了一个Demo将四种启动方式都测试了一下,里面包括 onActivityResult的使用以及在四种不同启动模式下使用效果的不同情况
3个方法的介绍和使用 startActivityForResult(Intent intent, int requestCode ) onActivityResult(int requestCode ,int resultCode, Intent data) setResult(int resultCode,intent intent)
在Android应用开发中,`onActivityResult`和`onRequestPermissionsResult`是两个重要的回调方法,用于处理从其他Activity返回的结果和权限请求。然而,在大型项目或复杂应用中,管理这些请求码(requestCode)可能会...
当我们调用startActivityForResult()方法来跳转页面的时候需要重写onActivityResult方法,不然就和startActivity没什么两样,这个demo就是简单说明调用时间。流程如下:MainActivity::onCreate MainActivity::...
在Android开发中,`onActivityResult` 是一个非常重要的方法,用于处理从子Activity返回的数据。然而,随着Android版本的更新,Google引入了新的回调机制,如`Lifecycle`组件和`ActivityResultContracts`,使得...
本示例关注的是如何在Adapter中利用`startActivityForResult()`方法启动一个新Activity,并在原Activity中通过`onActivityResult()`接收返回的数据。我们将详细探讨这个过程及其背后的机制。 首先,`...
之前遇到了onActivityResult提前调用的问题,说是和activity的启动模式有关,就做了一个Demo将四种启动方式都测试了一下,里面包括 onActivityResult的使用以及在四种不同启动模式下使用效果的不同情况
这些状态的变化由系统根据用户操作和设备资源管理自动触发。例如,当用户启动一个新的Activity时,当前Activity会被暂停;当新Activity关闭时,原Activity可能会恢复到之前的状态。开发者需要在特定的生命周期方法中...
在Android应用开发中,`onActivityResult`方法是一个至关重要的组件,它主要用于处理Activity之间的数据交互。当一个Activity启动另一个Activity并期待返回结果时,`onActivityResult`就派上用场了。这个方法是...
在Android应用开发中,`onActivityResult` 是一个关键的方法,用于处理从启动的其他Activity返回的结果。这个例子,"onActivityResult demo",旨在演示如何在一个Activity中启动另一个或多个Activity,并在它们之间...
首先,我们创建了一个名为`OnActResultEventDispatcherFragment` 的Fragment,它的主要职责是作为一个事件分发者,处理所有由其他Fragment发起的`startActivityForResult()` 请求。这个Fragment保留实例(`...
但是,在使用Fragment进行多层嵌套时,常常会遇到一个问题:通过startActivityForResult启动Activity,然后希望在Fragment的onActivityResult中接收结果,但是只有最外层的Fragment能够接收到回调,而内嵌的Fragment...
2. **正确处理Activity的`onActivityResult`**:在Activity的`onActivityResult`中,记得调用`super.onActivityResult(requestCode, resultCode, data)`,以便Fragment能接收到结果。 ```java @Override ...