首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

setResult调用了相同的活动,而不是调用父活动

是指在Android开发中,当一个活动(Activity)需要返回结果给调用它的活动时,可以使用setResult()方法来设置结果,并通过finish()方法来关闭当前活动。通常情况下,setResult()方法会将结果返回给调用它的父活动。

然而,有时候我们可能需要将结果返回给同一个活动,而不是调用它的父活动。这种情况下,可以通过在setResult()方法中传递一个特定的参数来指定要返回结果的活动。这样,当调用finish()方法关闭当前活动时,结果将返回给指定的活动。

这种情况下,可以通过在setResult()方法中传递一个特定的参数来指定要返回结果的活动。例如,可以使用以下代码来设置结果并返回给相同的活动:

代码语言:java
复制
Intent intent = new Intent();
intent.putExtra("result", "这是返回的结果");
setResult(RESULT_OK, intent);
finish();

在上述代码中,我们创建了一个Intent对象,并使用putExtra()方法将结果数据添加到Intent中。然后,我们调用setResult()方法,将结果设置为RESULT_OK,同时将Intent作为参数传递进去。最后,我们调用finish()方法关闭当前活动。

在接收结果的活动中,可以通过onActivityResult()方法来获取返回的结果数据。例如:

代码语言:java
复制
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    
    if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
        String result = data.getStringExtra("result");
        // 处理返回的结果数据
    }
}

在上述代码中,我们通过判断requestCode和resultCode来确定返回的结果是否有效。如果有效,我们可以使用getStringExtra()方法从Intent中获取返回的结果数据,并进行相应的处理。

总结:setResult调用了相同的活动,而不是调用父活动是指在Android开发中,通过设置setResult()方法的参数,可以将结果返回给同一个活动,而不是调用它的父活动。这在某些特定的场景下非常有用。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android-使用Intent传递数据

, 然后调用getStringExtra()方法,传入相应键值,就可以得到传递的数据, 由于传递的是字符串,所以调用该方法,如果传递的是整型则使用 getIntExtra(),如果是布尔型 则用,...StartActivityForResult()接收两个参数, 第一个参数还是Intent, 第二个参数是请求码,用于在回调中判断数据的来源。...(); 还是构建了一个Intent,不过这个Intent仅仅用于传递数据而已, 没有指定任何“意图”,把要传递的数据存放在Intent中,调用setResult()方法, 专门用于向上一个活动返回数据的...由于在一个活动中有可能调用startActivityForResult()方法启动很多不同的活动, 每一个活动返回的数据都会回调onActivityResult()方法,因此需要先判断requestCode...如果在SecondActivity中不是通过按钮点击返回的,而是按下Back键, 可以在SecondActivity中重写onBackPressed()方法解决问题: @Override public

1.2K30
  • AndroidStdio1_5

    可以看到,我们还是构建了一个Intent,只不过这个Intent仅仅是用于传递数据而已,它没有指定任何的“意图”。紧接着把要传递的数据存放在Intent中,然后调用了setResult()方法。...setResult()方法接收两个参数,第一个参数用于向上一个活动返回处理结果,一般只使用RESULT_OK或RESULT_CANCELED这两个值,第二个参数则把带有数据的Intent传递回去,然后调用了...而每当我们按下Back键或调用finish()方法去销毁一个活动时,处于栈顶的活动会出栈,这时前一个入栈的活动就会重新处于栈顶的位置。系统总是会显示处于栈顶的活动给用户。...这是因为并不是每一个活动都会占满整个屏幕的,比如对话框形式的活动只会占用屏幕中间的部分区域,你很快就会在后面看到这种活动。...这个方法在活动完全不可见的时候调用。它和onPause()方法的主要区别在于,如果启动的新活动是一个对话框式的活动,那么onPause()方法会得到执行,而onStop()方法并不会执行。

    62830

    安卓入门-第二章-探究活动

    很类似的,Android 系统初始化它的程序是通过活动中的 onCreate()回调的调用开始的。...紧接着把要传递的数据存放在Intent中,然后调用了setResult()方法。这个方法非常重要,是专门用于向上一个活动返回数据的。...setResult()方法接收两个参数,第一个参数用于向上一个活动返回处理结果,一般只使用RESULT_OK 或RESULT_CANCELED 这两个值,第二个参数则把带有数据的Intent传递回去,然后调用了...而最为关键的一步不是说我们认为的调用这些方法,而是重写这些方法,重写的原则是调用父类的方法,但是补充一个日志输出,代表此方法被执行了: @Override protected void...换种情况,如果活动本来就是继承于某个类,而不是父类AppCompatActivity,那么直接就使其最终类继承于我们新写的BaseActivity类即可。

    3K20

    Android学习笔记,不断更新

    com.sxf.activitytest.ACTION_START 这个action ,而标签则包含了一些附加信息,更精确地指明了当前的活动能够响应的Intent 中还可能带有的category 。...(RESULT_OK, intent); finish(); } 活动的生存期 ​ Activity 类中定义了7 个回调方法,覆盖了活动生命周期的每一个环节。...这个方法在活动准备好和用户进行交互的时候调用。此时的活动一定位于返回栈的栈顶,并且处于运行状态。 ​ onPause()。这个方法在系统准备去启动或者恢复另一个活动的时候调用。...它和onPause()方法的主要区别在于,如果启动的新活动是一个对话框式的活动,那么onPause()方法会得到执行,而onStop()方法并不会执行。 ​ onDestroy()。...活动被回收前的数据保存与恢复 ​ **onSaveInstanceState()**回调方法可以保证在活动被回收之前一定会被调用,因此我们可以通过这个方法来解决活动被回收时临时数据得不到保存的问题。

    1K40

    Android基础总结(2)——活动Activity

    putExtra()方法写入Intent,并调用setResult()方法进行返回intent便于第一个活动处理,setResult()方法也是两个参数,第一个是参数用于向上一个活动返回处理结果,一般只用...每当我们开启一个新的活动,它会在返回栈中入栈,并处于栈顶的位置;而每当我们按下Back键或调用finish()方法去销毁一个活动时,处于栈顶的活动会出栈,这时前一个入栈的活动就会重新回到栈顶的位置。...(因为并不是每一个活动都会布满屏幕,例如Toast等出现时,前一个活动就是暂停状态),该状态下的活动仍然是完全存活的,系统也不愿意去回收 停止状态:当一个活动不再处于栈顶位置,并且完全不可见时,系统愿意为这种活动保存相应的状态和变量...activity的七个回调方法 onCreate():当Activity第一次被实例化的时候系统会调用,整个生命周期只调用1次这个方法。...通常onSaveInstanceState()只适合用于保存一些临时性的状态,而onPause()适合用于数据的持久化保存。 9、活动的启动模式:4种 standard:这是默认的启动模式。

    1.2K90

    Android必知必会的四大组件--Activity

    (1)onPause() 和 onStop() (2)onStart() 和 onResume() onPause()说明当前的Activity已经暂停,但你并不是说暂停的意思只是没有了动作,而调用了onStop...onStart()也是一样,只是说Activity已经可以启动了,但这个时候页面还是不可见的,只有调用了onResume()页面才能够可见,页面跳转也是如此。...注意点: 如果其他App进程开启了Activity1,这个时候会创建新的任务栈 如果以该启动模式启动的Activity1已经活动在后台的一个任务栈中,那么启动后,后台任务栈会一起切换到前台。...常见场景的生命周期调用 上文中我们讲到过了两种场景的生命周期调用。这里重新放出用于背诵。...那我们就出现问题了getIntent()哪儿来的,传递靠的是什么机制??,因为我们的接收还没讲完,所以我们这个问题先保留。 因为我们说过一个事情存在回调,我们应该要怎么做的问题。

    74530

    返回数据给上一个活动

    ","第一个活动"); setResult(RESULT_OK,intent); finish(); 构建的这个意图就是去传递数据而已。...new一个对象,属于java发的人 的特色了,有时候觉得为什么不是birth呢,然后调用一个 setResult()接受两个参数,一个参数用于向上一个活动返回 处理结果,只有两个参数 ?...其实也不是两个参数了 二参数吧这个带有数据的intent带回去,然后调用fin 销毁 ? 这个是两个代码的关系图吧 ? ?...二是我们在返回数据时传入的处理结果 三是data,携带有返回数据的Intent由于活动里面可能会调用这个函数去启动不同的活动,每一个活动返回的数据都会回调到 ? 这个方法里面来检查值 ?...Intent提供了一种在不同应用程序中的代码之间执行后期运行时绑定的功能。它最重要的用途是在启动活动时,可以将其视为活动之间的粘合剂。它基本上是一种被动数据结构,其中包含要执行的动作的抽象描述。

    1K20

    JavaScript 闭包详解

    .原理 前言说到闭包函数就是一个嵌套在父函数里面并且有使用父函数变量的子函数, 闭包函数的执行必定依赖于父函数提供的数据,但要是调用闭包函数时父函数已经被销毁,闭包函数怎么执行呢?...我想探讨一下为什么推荐用立即执行函数来配合闭包进行变量保存… 一开始我猜为了在闭包函数保存完需要的变量后父函数能被及时回收释放内存,才采用了匿名立即执行函数来作为闭包函数的父函数.因为立即执行函数自我回调执行完成后会被立即销毁回收...活动对象包含变量对象所有的属性) 当createFunctions() 函数执行结束返回后,变量 i 的值就已经固定为10,而每个函数保存的变量对象里的 i 都出自createFunctions()的活动对象...即说明了闭包中所保存的是整个活动对象,而不是某个具体的变量,这种机制并不是我们想要的,我们希望它能把每个变量单独保存下来,所以就有了能解决这个问题的,使用了立即执行函数的例子,即例2: function...myFunction: function () { /* 函数体 */ } }(); 让JavaScript引擎先看到小括号而不是

    44020

    速读原著-Android应用开发入门教程(屏幕间的跳转和事件的传递)

    6.4 屏幕间的跳转和事件的传递 在一般情况下,Android 的每一个屏幕基本上就是一个活动(Activity),屏幕之间的切换实际上就是在活动间互相调用的过程,Android 使用 Intent 完成这个动作...本例中使用了 finish()函数表示当前的活动结束,这样在第二个活动(ForwardTarget)启动时,第一个活动(Forward)已经不存在了。...如果没有调用 finish()函数,第二个活动启动时,第一个活动就处于 OnPause 状态,当第二个活动退出后,第一个活动重新出现,也就是会调用活动的 onResume()函数。...View v) { setResult(RESULT_OK, (new Intent()).setAction("Corky!"))...Android 中使用 Intent 并使用 startActivity()和 startActivityForResult()调用一个新的活动,实现屏幕的跳转功能,调用者可以获得跳转对象的返回信息。

    90720

    速读原著-Android应用开发入门教程(屏幕间的跳转和事件的传递)

    6.4 屏幕间的跳转和事件的传递 在一般情况下,Android 的每一个屏幕基本上就是一个活动(Activity),屏幕之间的切换实际上就是在活动间互相调用的过程,Android 使用 Intent 完成这个动作...本例中使用了 finish()函数表示当前的活动结束,这样在第二个活动(ForwardTarget)启动时,第一个活动(Forward)已经不存在了。...如果没有调用 finish()函数,第二个活动启动时,第一个活动就处于 OnPause 状态,当第二个活动退出后,第一个活动重新出现,也就是会调用活动的 onResume()函数。...这里的参数 requestCode 也是根据当时的在调用 startActivityForResult()的时候指定的返回值。...Android 中使用 Intent 并使用 startActivity()和 startActivityForResult()调用一个新的活动,实现屏幕的跳转功能, 调用者可以获得跳转对象的返回信息。

    85710

    使用工作队列管理器(三)

    可以使用回调有两个原因:执行依赖于工作项完成的工作如果选择异步完成工作项,则表示所有排队的工作都已完成包括工作项的回调要添加回调,请在将工作项添加到工作队列时调用 QueueCallback() 方法而不是...主进程将相同的参数传递给主工作项和回调代码。...包括回调以确定完成可以轮询工作队列管理器以确定完成,而不是使用 WaitForComplete() 方法等待工作队列中的所有排队工作完成后再返回主进程,如下所示:如上一节所述,使用 QueueCallback...() 方法而不是 Queue() 方法将工作项添加到工作队列。...Flush()当工作项调用此方法时,会导致父工作队列写入工作项的所有已保存输出。

    46020

    安卓应用安全指南 4.1.3 创建使用活动 高级话题

    应用 A 试图通过发送隐式意图,来调用同一应用中的私有活动 ,但是这次显示了对话框,询问用户选择哪个应用,以及应用 B 中的公共活动 B-1 ,由于用户的选择而错误调用。...一些开发人员可能会认为,仅仅比较软件包名称而不获取证书就足够了,但是,很容易伪装成合法应用的软件包名称,因此这不是检查真实性的好方法。 任意指定的值不应用于认证。...使用这个方法有两个限制: 请求应用需要使用startActivityForResult()而不是startActivity()。 请求应用应该只从Activity调用。...这里的问题是,任务的活动实例以singleInstance启动,当以“标准”调用的Activity的 Affinity 与任务相同时,新任务的生成受到现有的singleInstance 活动的限制。...但是,当每个活动的类名称相同时,不会生成任务,并使用现有活动实例。在任何情况下,被调用活动都将成为根活动。 如上所述,调用根Activity的条件很复杂,例如取决于执行状态。

    1.4K20

    applycallbind、作用域闭包、this指向(普通,箭头,JSVue的this)

    接收的第一个参数都是this要指向的对象区别:apply只有两个参数,第二个参数为数组;call和bind传参相同,多个参数依次传入的;call和apply都是对函数进行直接调用(立即执行),而bind...注意: 函数每被调用一次,都会产生一个新的执行上下文环境函数在定义的时候(不是调用的时候),就已经确定了函数体内部自由变量的作用域。这里要跟this指向区分开。...要到创建这个函数的那个作用域中取值——是“创建”,而不是“调用”,切记切记,如下图示例:var x = 10,function fn() { console.log(x); }function show...箭头函数–this–确定时机(定义)(1)箭头函数没有自己的this, 它的this是继承而来;(2)默认指向在定义它时父级作用域(函数作用域)的this,而不是执行时的对象。...(它被调用后this的指向要进行具体分析),简单对象没有this)普通函数形式的回调函数的this是window,箭头函数形式的回调函数的this遵循箭头函数的原则(大多数情况下是vue实例对象)//

    11310

    《移动互联网技术》第五章 界面开发: 掌握Activity的基本概念,Activity的堆栈管理和生命周期

    ,而不是在活动的布局文件中设置。...碎片和活动解除关联,调用onDetach()函数。在碎片的生命周期中,同样有运行状态、暂停状态、停止状态和销毁状态。 在整个生命周期中,碎片依附于活动而存在。...模式,在栈顶不会有两个相同的活动。...子活动作为发送方,需要将数据放入Intent,然后调用setResult()函数把子活动想要返回的数据返回到MainActivity。...事件处理接口对象也称为监听器,通过覆盖接口的回调方法实现对事件的捕捉和处理;View 类的事件监听器是一个接口,该接口中的回调方法会在 View 的事件监听器被触发时由 Android 系统调用。

    22610

    【译】Android泄漏模式:View中的订阅

    所以,View.onFinishInflate()被调用了,而View.onAttachedToWindow()则没有。...让我们多了解一些这个View.onAttachedToWindow(): 当view被添加到一个已经加载到window的父view中时,addView()的内部会立即调用onAttachedToWindow...当View被添加到一个还没有加载至window的父view中时,onAttachedToWindow()将会在父view被加载到window后执行。...view都会收到View.onFinishInflate()的回调通知,而不是View.onAttachedToWindow(),而原因是: View.onAttachedToWindow()只在第一次...Activity.onCreate()的文档给出了答案: 你可以在这个函数内直接调用finish(),这种情况下onDestroy()会被立即调用,那么将不再执行剩余的生命周期回调(onStart

    54010
    领券