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

如何在startActivityForResult()中传递数据并在onActivityResult()中将其取回?

在Android开发中,可以使用startActivityForResult()方法启动一个新的Activity,并且可以传递数据给新的Activity。然后,在新的Activity中处理完逻辑后,可以通过setResult()方法将结果数据返回给调用的Activity,并在调用的Activity中的onActivityResult()方法中获取返回的数据。

下面是具体的步骤:

  1. 在调用的Activity中,使用startActivityForResult()方法启动新的Activity,并传递数据。例如:
代码语言:txt
复制
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtra("key", "value"); // 传递数据
startActivityForResult(intent, requestCode);
  1. 在新的Activity中,获取传递过来的数据。可以在onCreate()方法中使用getIntent()方法获取传递的Intent,并通过getStringExtra()等方法获取具体的数据。例如:
代码语言:txt
复制
Intent intent = getIntent();
String data = intent.getStringExtra("key"); // 获取数据
  1. 在新的Activity中处理完逻辑后,通过setResult()方法将结果数据返回给调用的Activity。例如:
代码语言:txt
复制
Intent intent = new Intent();
intent.putExtra("result", "success"); // 设置结果数据
setResult(RESULT_OK, intent);
finish(); // 结束当前Activity
  1. 在调用的Activity中的onActivityResult()方法中获取返回的数据。例如:
代码语言:txt
复制
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == requestCode && resultCode == RESULT_OK) {
        String result = data.getStringExtra("result"); // 获取返回的结果数据
        // 处理返回的结果数据
    }
}

这样,就可以在startActivityForResult()中传递数据,并在onActivityResult()中将其取回了。

推荐的腾讯云相关产品:腾讯云移动应用分析(MTA),腾讯云移动推送(TPNS),腾讯云移动直播(MLVB),腾讯云移动短信(SMS),腾讯云移动支付(MPS),腾讯云移动游戏加速(GME),腾讯云移动混合云(MCM),腾讯云移动智能硬件(MIH),腾讯云移动智能家居(MIH),腾讯云移动智能车联网(MIC),腾讯云移动智能医疗(MIM),腾讯云移动智能教育(MIE),腾讯云移动智能金融(MIF),腾讯云移动智能物流(MIL),腾讯云移动智能城市(MIC),腾讯云移动智能旅游(MIT),腾讯云移动智能餐饮(MIC),腾讯云移动智能零售(MIR),腾讯云移动智能娱乐(MIE),腾讯云移动智能体育(MIS),腾讯云移动智能农业(MIA),腾讯云移动智能能源(MIE),腾讯云移动智能环保(MIE),腾讯云移动智能制造(MIM),腾讯云移动智能安防(MIS),腾讯云移动智能交通(MIT),腾讯云移动智能航空(MIA),腾讯云移动智能航天(MIA),腾讯云移动智能物联网(MIoT),腾讯云移动智能人工智能(MIAI),腾讯云移动智能大数据(MIBD),腾讯云移动智能云计算(MICC),腾讯云移动智能区块链(MIBC),腾讯云移动智能元宇宙(MIU)。具体产品介绍和链接地址请参考腾讯云官方网站。

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

相关·内容

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

6.4 屏幕间的跳转和事件的传递 在一般情况下,Android 的每一个屏幕基本上就是一个活动(Activity),屏幕之间的切换实际上就是在活动间互相调用的过程,Android 使用 Intent 完成这个动作...初始化界面如图所示,点击“Get Result”按钮将跳转到第二个屏幕,图所示;在第二个屏幕中点击“Corky”和“Violet”按钮将返回第一个屏幕,并获得对应显示,如右图所示。...(类型 data)表示活动间交互附加的数据信息。...()是一个被继承的函数,其参数 data 就是这个活动作为返回值接受到,data.getAction()可以从返回的 Intent 取回内容。...这里的参数 requestCode 也是根据当时的在调用 startActivityForResult()的时候指定的返回值。

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

    6.4 屏幕间的跳转和事件的传递 在一般情况下,Android 的每一个屏幕基本上就是一个活动(Activity),屏幕之间的切换实际上就是在活动间互相调用的过程,Android 使用 Intent 完成这个动作...初始化界面如图所示,点击“Get Result”按钮将跳转到第二个屏幕,图所示;在第二个屏幕中点击“Corky”和“Violet”按钮将返回第一个屏幕,并获得对应显示,如右图所示。...(类型 data)表示活动间交互附加的数据信息。...()是一个被继承的函数,其参数 data 就是这个活动作为返回值接受到,data.getAction()可以从返回的 Intent 取回内容。...这里的参数 requestCode 也是根据当时的在调用 startActivityForResult()的时候指定的返回值。

    90620

    Android-使用Intent传递数据

    思路很简单,Intent提供了一系列putExtra()方法的重载, 可以把我们想要传递数据暂存在Intent,启动了另一个活动后, 再把这些数据从Intent取出就可以了。..., 接收两个参数, 第一个参数是键,用于后面从Intent取值, 第二个参数是要传递数据。...StartActivityForResult()接收两个参数, 第一个参数还是Intent, 第二个参数是请求码,用于在回调判断数据的来源。...然后在SecondActivity给按钮注册点击事件,并在点击事件添加返回数据的逻辑 Intent intent = new Intent(); intent.putExtra...由于在一个活动中有可能调用startActivityForResult()方法启动很多不同的活动, 每一个活动返回的数据都会回调onActivityResult()方法,因此需要先判断requestCode

    1.2K30

    Android Intent漏洞

    2.安全问题 滥用Activity返回值 如果受害应用使用startActivityForResult(),攻击应用使用setResult()将数据传输到受害者应用的onActivityResult...通常有两种攻击操作: 通常导致读入任意文件 自定义操作,取决于应用程序实现产生的不同漏洞 自定义操作 受害者应用代码:功能需要接受返回数据并在webview打开,接收返回码为1 startActivityForResult...数据发送到服务器。...这可用于创建一个代理组件(活动、广播接收器或服务),该组件采用嵌入式意图并将其传递给危险方法,startActivity()或 sendBroadcast()因此,可以强制应用启动无法直接从其他应用启动的未导出组件...例如,假设消息传递服务从服务器请求新消息,并将其传递给负责在用户屏幕上显示这些消息的广播接收器: Intent intent = new Intent("com.victim.messenger.IN_APP_MESSAGE

    59630

    【Jetpack更新之Fragment】1.3.0-alpha04 来袭,Fragment 间通信的新姿势

    前言 fragment 1.3.0-alpha04 发布了,其中有很多变动,其中提供了 fragment 间传递数据的新方式 ?...1.3.0-alpha04 更新 API 更改 首先我们介绍一下 API 更改 startActivityForResult()/onActivityResult() 和 requestPermissions...」 机制,因此 fragment 的 startActivityForResult()/onActivityResult() 和 requestPermissions()/onRequestPermissionsResult...fragment 之间传递数据的新方式 前文提到,在相同的 FragmentManager 可以使用 target fragment API 来在 fragment 间传递数据,但这种方式需要直接访问目标...这种传递数据的方式适用于 DialogFragment ,Navigation 的 fragment 此更改还包括 -ktx 扩展功能以确保 kotlin 用户可以将 FragmentResultListener

    1.4K20

    onActivityResult!你好,Activity Results API!

    背景 在Android应用程序开发,启动一个Activity不一定是单项操作,从启动的Activity获取数据是常见的场景,最传统的方式是通过Intent携带数据,然后使用startActivityForResult...){ // 处理第二个页面带回的数据 } } 以上方式,onActivityResult就能获取从上一个界面返回的数据,这种方式非常有用,不仅能同一个应用,也可以从其他应用获取数据...:1.3.0-alpha02 ,已经废弃了startActivityForResultonActivityResult方法。...ActivityResultContract: 协议,它定义了如何传递数据和如何处理返回的数据。...另外,startActivityForResultonActivityResult已经被废弃,官方也是强烈建议使用这种方式来进行数据传递并获取Activity返回的数据

    1.8K20

    onActivityResult!你好,Activity Results API!

    背景 在Android应用程序开发,启动一个Activity不一定是单项操作,从启动的Activity获取数据是常见的场景,最传统的方式是通过Intent携带数据,然后使用startActivityForResult...){ // 处理第二个页面带回的数据 } } 以上方式,onActivityResult就能获取从上一个界面返回的数据,这种方式非常有用,不仅能同一个应用,也可以从其他应用获取数据...:1.3.0-alpha02 ,已经废弃了startActivityForResultonActivityResult方法。...ActivityResultContract: 协议,它定义了如何传递数据和如何处理返回的数据。...另外,startActivityForResultonActivityResult已经被废弃,官方也是强烈建议使用这种方式来进行数据传递并获取Activity返回的数据

    1.6K40

    Activity 活动跳转(Java&Kotlin)

    传递数据 实际开发的页面跳转都不会是单纯的跳转,肯定会携带一些参数的。...Java //传递方 //活动跳转时传值 通过键值的方式传递 另一页面接收根据键来取值 Intent intent = new Intent(this,TestActivity.class...Anko库扩展出来的intentFor函数简化启动标志的设置方式,列,启动标志FLAG_ACTIVITY_NEW_TASK 对应的Anko写法如下: startActivity(intent.newTask...页面跳转的多数情况是上一个页面传递请求参数给下一个页面,当然也有少数情况是上一个页面需要接受下一个页面的返回数据,此时Kotlin和Java一样都采取startActivityForResult方法,...Java @Override public void startActivityForResult(Intent intent, int requestCode) { super.startActivityForResult

    1.7K30

    Android应用界面开发——简单控件和Activity间传递数据

    Activity间传递数据 Activity之间传递数据有两种方法: startActivity(intent):打开另一个Activity,同时向开启的界面Activity传递数据。...startActivityForResult(intent):打开另一个Activit,同时向开启的Activity传递数据,并回传数据。...WebView:加载网页 ListView:显示列表 GridView:显示表格式列表 ScrollView:内容可滚动视图 SufaceView:非常重要的绘图容器 针对比较常用的控件一和Activity之间传递数据写了一个小的...finish(); } }, 1000); } } 这里界面的自动跳转用到了Handler的postDelayed方法,Activity间传递数据用到了...,所以打开买书界面应该用startActivityForResult方法,并实现onActivityResult方法,当打开的界面由结果返回时,调用该方法,并在这个方法里将返回的结果显示出来。

    1.9K30

    Jetpack:使用 ActivityResult 处理 Activity 之间的数据通信

    在Android,我们如果想在Activity之间双向传递数据,需要使用startActivityForResult启动,然后在onActivityResult处理返回,另外申请权限也是类似的步骤。...ActivityResult是Jetpack提供的一个功能,可以简化Activity直接的数据传递(包括权限申请)。...> 最简单的,相当于传统方式的startActivityForResult,只不过将onActivityResult的几个参数封装成一个ActivityResult public ActivityResult...(跟传统方式一样,这个bitmap只是一个图片预览,因为intent不能传输过大的数据) 注意虽然输入是Void,但是执行ActivityResultLauncher的lanch函数是还需要传入一个null...但是实际上返回是在onActivityResult函数,这里就需要关注mPendingResults,在ActivityResultRegistry的doDispatch函数为它赋予了数据,而doDispatch

    1.2K30

    Android系列之Activity的传值和回传值

    我们来看看如何在Activity对象中进行值的传递,也是通过 Intent 对象的各种putExtra方法来进行传递: MainActivity: public class MainActivity extends...intent.putExtra("com.xiaoluo.android_intent.age", 20); // 第一个参数指定name,android规范是以包名+变量名来命名,后面是各种类型的数据类型...的这个方法, public void startActivityForResult (Intent intent, int requestCode) Same as calling startActivityForResult...我们看到这里还有一个 onActivityResult 方法,这个方法就是用来处理我们Activity的回传值的方法,所有的Activity回传值的操作都是在这个方法完成。...对象,通过的 onActivityResult 方法来处理得到的回传Intent对象。

    2K30

    是时候丢掉 onActivityResult 了 !

    你的答案肯定是 startActivityForResultonActivityResult 。...没错,一直以来,在某些场景下,例如启动系统相机拍照,返回当前页面后获取照片数据,我们并没有其他选择,只能在 onActivityResult 中进行处理。...上面的例子,prepare() 方法传入的协议实现类是 StartActivityForResult 。它是 ActivityResultContracts 类的静态内部类。...take picture : $result") } pictureCustomBt.setOnClickListener { takePictureCustom()} 这样就可以调用系统相机拍照并在结果回调拿到...有时候我们可能会在结果回调中进行一些复杂的处理操作,无论是之前的 onActivityResult() 还是上面的写法,都是直接耦合在视图控制器的。

    73920
    领券