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

使用startActivityForResult()的代码流

startActivityForResult() 是 Android 平台上的一种启动 Activity 的方法,它允许启动一个 Activity 并在之后的某个时间点获取其结果。这个方法通常用于从一个 Activity 获取数据并返回到启动它的 Activity。

基础概念

startActivityForResult() 方法允许你启动一个新的 Activity,并在新 Activity 结束时接收一个结果代码和一个 Intent 对象。这个 Intent 可以包含返回的数据。

代码流示例

以下是一个简单的示例,展示了如何使用 startActivityForResult()

启动 Activity 并请求结果

代码语言:txt
复制
// 在主 Activity 中
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivityForResult(intent, REQUEST_CODE);

在新 Activity 中设置结果并返回

代码语言:txt
复制
// 在 SecondActivity 中
Intent resultIntent = new Intent();
resultIntent.putExtra("key", "value");
setResult(Activity.RESULT_OK, resultIntent);
finish();

处理返回结果

代码语言:txt
复制
// 在主 Activity 中重写 onActivityResult() 方法
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == REQUEST_CODE && resultCode == Activity.RESULT_OK) {
        String result = data.getStringExtra("key");
        // 处理返回的数据
    }
}

优势

  • 数据传递:可以在不同的 Activity 之间传递数据。
  • 结果回调:可以获取启动的 Activity 的执行结果。

类型

  • 标准模式:使用 startActivityForResult()onActivityResult() 方法。
  • 兼容模式:在较新的 Android 版本中,推荐使用 registerForActivityResult()ActivityResultContracts API。

应用场景

  • 用户输入:例如,从一个 Activity 启动另一个 Activity 获取用户输入的数据。
  • 图片选择:启动一个图片选择器 Activity 并获取选中的图片。

遇到的问题及解决方法

问题:onActivityResult() 方法没有被调用

  • 原因:可能是由于在 Android 11 及以上版本中,startActivityForResult() 的使用方式有所变化。
  • 解决方法:使用 registerForActivityResult()ActivityResultContracts API 替代传统的 startActivityForResult() 方法。

示例代码(使用 registerForActivityResult()

代码语言:txt
复制
// 在主 Activity 中
ActivityResultLauncher<Intent> activityResultLauncher = registerForActivityResult(
    new ActivityResultContracts.StartActivityForResult(),
    result -> {
        if (result.getResultCode() == Activity.RESULT_OK) {
            Intent data = result.getData();
            String resultData = data.getStringExtra("key");
            // 处理返回的数据
        }
    });

Intent intent = new Intent(MainActivity.this, SecondActivity.class);
activityResultLauncher.launch(intent);

参考链接

通过以上信息,你应该能够理解 startActivityForResult() 的基础概念、优势、类型、应用场景以及如何解决常见问题。

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

相关·内容

  • Android startActivityForResult()用法

    领导说我基础差,我也没反驳,知识忘记了,用到时候查一下不久行了吗,自己最近在回顾知识 好好在补充一下,今天礼拜日,趁着空闲事件记录一下简单知识 startActivityForResult() 也是经常使用到比如我们做城市选择点击城市...,返回点击城市等等, 使用startActivityForResult()方法 你需要清楚 1 startActivityForResult(Intent intent, int requestCode...) Intent intent就和普通activity跳转一样 可能是activity或者数据 int requestCode 这个是自己写标记,可能一个界面跳转不懂界面做区分,不过这个虽说是自己随意取...可以自己写一个或者使用官方RESULT_OK Intent data 这个就是要返回数据 下面是源码注释 * @param resultCode The result code to propagate...Intent intent = new Intent(InformatonActivity.this, NickNameActivity.class); startActivityForResult

    22640

    Android startActivityForResult和setResult区别

    Android startActivityForResult和setResult区别 startActivityForResult与startActivity不同之处在于: 1、startActivity...( ) 仅仅是跳转到目标页面,若是想跳回当前页面,则必须再使用一次startActivity( )。...2、startActivityForResult( ) 可以一次性完成这项任务,当程序执行到这段代码时候,假若从T1Activity跳转到下一个Text2Activity,而当这个Text2Activity...(intent, 0);//这里采用startActivityForResult来做跳转,此处0为一个依据,可以写其他值,但一定要 =0 2.重写onActivityResult方法,用来接收B回传数据...以上就是Android startActivityForResult和setResult区别,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站支持!

    1.4K31

    安卓开发_startActivityForResult详细用法

    一个需求:一个activity到另一个activity进行一些设置,返回第一个activity时候 获取第二个activity设置数据 百度了一下,发现startActivityForResult这个很完美的符合了我效果要求...正文: startActivityForResult主要作用就是它可以回传数据,假设我们有两个页面,首先进入第一个页面,里面有一个按钮,用于进入下一个页面,当进入下一个页面时,进行设置操作,并在其finish...这里看下Demo,一共两个activity  让我们来看下代码: 1 package other; 2 3 import com.example.allcode.R; 4 5 import...请求码作用     使用startActivityForResult(Intent intent, int requestCode)方法打开新Activity,我们需要为startActivityForResult...结果码作用 在一个Activity中,可能会使用startActivityForResult()方法打开多个不同Activity处理不同业务,当这些新Activity关闭后,系统都会调用前面Activity

    88960

    效率办公 | 低代码:轻使用体验

    24 2024-04 效率办公 | 低代码:轻使用体验 目前已经体验了三款零代码工具了,不出以外的话这是最后一款低代码工具使用体验了。...信息都填写好之后就来到了这个模板页面,和前面几次体验都很类似,在看过之前几个低代码工具之后再看到这个就觉得很简单了。...小结一波零代码 总结一下就是俩字:简单。美中不足就是和竟对相比,轻内置模板不够丰富,绝大多数业务场景还真的得是从零开始搭建应用。...只要能把业务流程设计明白,搭建系统就是轻而易举,这些零代码工具,支持一个简单创业公司业务场景其实是绰绰有余。 思路比代码重要,在这个工具爆炸时代尤其适用。...半路出家自学成才文科数据人,看过了大厂风景也做过了小厂CDO~目前是闲职,主要是想沉淀自己,自媒体写作是最好自我总结和自我复盘 做数据 周一:AIGC相关,包括但不限于教程、使用评测 周二:

    14810

    网络问题,及其代码

    之前一个学习一直在看图像分割部分内容,基于交互图像分割基本都是用图割算法,全自动图割算法也有最小生成树改进算法。...现在想写点东西,从算法 最本质问题,图论中网络问题开始,做个总结,也算是对知识一个回顾。 网络最大流,增广路,残留网络,最小割这几个基本概念是构成最大流最小割定理基本概念。...而该定理是网络理论基础。 我们还有一下几个问题需要搞清楚: 1.最本质问题就是使用图割算法解决具体问题时候,是怎样构建图,节点对应什么,边权值对应什么。...3.怎么引入能量这个概念。 几种最大流算法时间复杂度: ?

    86220

    代码测试平台-

    今天分享一个开源代码测试平台-马。它优点是同时支持API接口、UI自动化在线自动化用例开发,而不需要手写代码即可完成。...项目介绍 马是一款低代码自动化测试平台,旨在采用最简单架构统一支持API/WebUI/AppUI自动化测试。...平台采用低代码设计模式,将传统测试脚本以配置化实现,从而让代码能力稍弱用户快速上手自动化测试。同时平台也支持通过简单代码编写实现自定义组件,使用户可以灵活实现自己需求。...本项目分为平台端和引擎端,采用分布式执行设计,可以将测试执行节点(即引擎)注册在任意环境任意一台机器上,从而突破资源及网络限制。...WebUI测试 支持关键字驱动,零代码编写用例。 支持UI元素统一管理,Excel模板批量导入。 支持自定义关键字,封装公共操作步骤,提升用例可读性。支持本地引擎执行,实时查看执行过程。

    1.1K30

    Java基础(五)| IO 使用缓冲正确姿势

    Java 中 I/O 操作主要是指使用 java.io 包下内容,进行输入、输出操作。输入也叫做读取数据,输出也叫做作写出数据。...使用基本字节输入流读取文件,就相当于将文件中数据,通过操作系统,在通过 JVM 一个个传入到内存中,这样的话,文件读取速度比较慢。...如果使用字节缓冲,就可以建立一个缓冲区(相当于一个数组),将缓冲区里面的数据批量传入到文件中,这样的话就提高了文件读取速度。一句话概括就是:缓冲比较高效,因为它减少了 IO 次数。...四、使用缓冲 缓冲,也叫高效,是对 4 个基本字节、字符增强,所以也是 4 个,按照数据类型分类: 字节缓冲:BufferedInputStream,BufferedOutputStream...缓冲使用数组)复制时间 3.2 字符缓冲 与字节缓冲一样,字符缓冲创建也是建立在文件字符基础上: // 字符缓冲输入流 BufferedReader br = new BufferedReader

    94310

    Java 基础(四)| IO 使用文件正确姿势

    先上一张我自己总结 IO 留思维导图,我先把它分成了节点和处理,节点是直接接触数据源,而处理是出于各种目的在节点基础上再套一层 IO 。...在操作时时,无论使用什么样对象,底层传输始终为二进制数据。 2.2 什么叫文件?...(这点,后面转换流会复习到) 四、使用文件字符使用字节流读取文本文件时,可能会有一个小问题。就是遇到中文字符时,可能不会显示完整字符,那是因为一个中文字符可能占用多个字节存储。...字符输入流 字符输出,写文件 4.1 FileReader java.io.FileReader 类继承于 Reader 类,是读取字符文件便利类。构造时使用系统默认字符编码和默认字节缓冲区。...如果我们既想写出数据,又想继续使用,就需要 flush 方法了。 flush :刷新缓冲区,对象可以继续使用。 close: 先刷新缓冲区,然后通知系统释放资源。对象不可以再被使用了。

    1.1K40

    一看就懂 startActivityForResult(Intent intent, int requestCode)

    关于startActivityForResult startActivityForResult(Intent intent, int requestCode)老是遗忘 尤其其中几个参数。...所以今天就简单记录下来 startActivityForResult startActivityForResult(Intent intent, int requestCode)。...一.首先在ActivityA中启动startActivityForResult startActivityForResult(Intent intent, int requestCode) 参数1.就是一个...所以你可以用这个参数来判断是从哪个activity中返回。(前提是你在开启新activity时候 要传requestcode不一样) 二。其次还有一个方法。...这个方法是在ActivityB中使用,主要一定要在finish()之前调用该方法 不然不起作用 setResult(int resultCode, Intent data) 同样还是两个参数, 参数

    63830

    【Java】Stream是什么,如何使用Stream

    Stream ---- Stream: Stream结合了Lambda表达式,简化了集合、数组操作。 ①使用步骤: ①得到一条Stream,并将数据放上去。...②使用中间方法对流水线上数据进行操作。 ③使用终结方法对流水线上数据进行操作。...):数组获取Stream(Arrays工具类中静态方法) public static stream of(T... values):获取一堆零散数据Stream(Stream接口中静态方法...,数据需要统一类型) 双列集合无法直接获取Stream,需要先使用keySet() / entrySet()再对获取到集合使用stream()获取。...中间方法、返回新Stream只能使用一次,建议链式编程。 修改Stream数据,原本集合或数组数据不变。

    25450

    在React中使用Redux数据(讲解比较清晰,差代码

    node-引擎 webpack-构建 一、了解数据 ? ? ? this.props-父子组件间传递 this.state组件当前状态 二、安装框架及介绍 ?...express:node下最有名一个服务器,像php,类似python下django,java等web服务器。可以把一些数据动态插入在模板中。 ? 比较简单 ? 一般是在内存里打包 ?...待办项列表 传入state和输出state都是个数组概念 ? 处理完待办项和待办项列表 ? 在reducers下新建visibilityFillter.js,存放筛选器 ? ?...在container下新建AddTodo.js文件,引入react-reduxconnect方法 ? connect-高级写法 ? 查看源代码。 ?...传入text由input写入,把ref进行绑定 ? 添加AddTodobutton 把显示和逻辑混合在container里 下面,把显示和逻辑分离,写一个纯粹container组件: ?

    73420
    领券