registerForActivityResult()方法的简单理解和使用

这篇具有很好参考价值的文章主要介绍了registerForActivityResult()方法的简单理解和使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近学到了registerForActivityResult,简单理解一下:
1、使用registerForActivityResult为获取到的结果注册结果回调,但其本身不会启动intent跳转
2、registerForActivityResult最后会返回一个ActivityResultLauncher对象用于启动intent跳转
3、registerForActivityResult第一个参数是ActivityResultContracts,除了通用的StartActivityForResult,还有TakePicture(拍照)、RequestPermission(请求单个权限)、PickContact(从通讯录获取联系人)等预定义好的contract
4、第二个参数中的onActivityResult() 方法用于处理获取到的数据结果

深入理解参考以下两篇文章:
https://www.cnblogs.com/–here–gold–you–want/p/14841024.html
http://www.icodebang.com/article/264591

SecondActivity的数据返回给FirstActivity,代码如下:文章来源地址https://www.toymoban.com/news/detail-418854.html

一、FirstActivity.java
public class FirstActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //该方法要放在onCreate里面,不能放在监听器里
        ActivityResultLauncher launcher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback<ActivityResult>() {
            @Override
            public void onActivityResult(ActivityResult result) {
                if(result.getResultCode() == Activity.RESULT_OK){
                    Log.d("data_return", result.getData().getStringExtra("data_return"));
                }
            }
        });

        Button button1 = (Button) findViewById(R.id.button_1);
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
                launcher.launch(intent);//启动intent跳转
            }
        });
    }
}
二、SecondActivity.java
public class SecondActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);

        Button button2 = (Button) findViewById(R.id.button_2);
        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent();
                intent.putExtra("data_return","the data of returning to FirstActivity");
                setResult(RESULT_OK,intent);
                finish();
            }
        });
    }
}

到了这里,关于registerForActivityResult()方法的简单理解和使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 用code去探索理解Llama架构的简单又实用的方法

    除了白月光我们也需要朱砂痣       我最近也在反思,可能有时候算法和论文也不是每个读者都爱看,我也会在今后的文章中加点code或者debug模型的内容,也许还有一些好玩的应用demo,会提升这部分在文章类型中的比例       今天带着大家通过代码角度看一下Llama,或者说看

    2024年02月20日
    浏览(30)
  • Android:同步屏障的简单理解和使用

    这里我们假设一个场景:我们向主线程发送了一个UI绘制操作Message,而此时消息队列中的消息非常多,那么这个Message的处理可能会得到延迟,绘制不及时造成界面卡顿。同步屏障机制的作用,是让这个绘制消息得以越过其他的消息,优先被执行。 Handler的message分为三种 同步

    2024年02月08日
    浏览(39)
  • Android:IdleHandler的简单理解和使用

    IdleHandler 说白了,就是 Handler 机制提供的一种,可以在 Looper 事件循环的过程中,当出现空闲的时候,允许我们执行任务的一种机制。 IdleHandler 被定义在 MessageQueue 中,它是一个接口。 返回值为 false,即只会执行一次; 返回值为 true,即每次当消息队列内没有需要立即执行的

    2024年02月16日
    浏览(28)
  • 通俗理解TIM定时器并简单使用

    前言:本文章部分代码参考自野火的例程 本人使用的是野火家的指南者开发板,芯片型号是STM32f103VET6 有纰漏请指出,转载请说明。 学习交流请发邮件 1280253714@qq.com 源代码在这里 B站这位UP主讲51单片机定时器工作原理 讲得很好 stm32有3种定时器,分别是基本定时器、通用定时

    2024年02月10日
    浏览(31)
  • STM32中DSP库简单理解和使用

    主要参考arm_math.h中的内容编写,以STM32F091为例 数字信号处理(DigitalSignal Processing,简称 DSP ) 是一门涉及许多学科而又广泛应用于许多领 域的新兴学科,通过利用计算机或专用处理设备,以数字形式对信号进行采集、变换、滤波、估值、增强、 压缩、识别等处理,以得到符

    2024年02月15日
    浏览(37)
  • 深入理解与使用go之函数与方法--使用

    深入理解与使用go之函数与方法–理解与使用 在 Go 语言中,函数被视为一等公民(First-Class Citizens),这意味着函数可以像其他值(比如整数、字符串等)一样被操作、分配和传递。而方法是附加到给定类型的函数。附加类型称为接收器,可以是指针或值。 我们分别看两个例

    2024年03月25日
    浏览(36)
  • Vue中的$emit的使用方法与理解

    学到Vue的组件内传值时,props父传子还能理解,但是对子组件给父组件传值(也就是 e m i t 方法),对于这个 emit方法),对于这个 e mi t 方法),对于这个 emit我感觉有点绕,知道它的作用,但是对它的用法还是掌握不好,主要还是对于为什么这么用很疑惑。 对父组件给子组

    2024年02月02日
    浏览(33)
  • Git分支管理:理解主干与分支的概念及使用方法

    Git 的主干是指代码库中的主要分支,通常称为 master 分支。在 master 分支上,您可以看到项目的最新版本,这是所有其他分支的基础。当您在 master 分支上进行更改时,这些更改将影响到所有其他分支。 分支是指从主干分支(或其他分支)分离出来的一个独立的代码版本。分

    2024年02月15日
    浏览(27)
  • 方法:免费使用Microsoft 365 & Office 365(方法简单)

    *每次都会提示【获取正版 OFFICE】 下载GitHub内文件夹 GitHub文件夹   如果打不开: 那这个方法 不适用于你的电脑 选择 甲 的到这里就结束了,选择 乙 的继续往下 GitHub文件夹 把【github.com】改成【github1s.com】 右键文件夹,【Download】 打开【新建文本文档.txt】【Office Tool Plu

    2024年02月15日
    浏览(33)
  • 详解async 与 await,带您理解Playwright使用异步方法的正确姿势!

    大家在使用python做playwright自动化测试的过程中,一定会发现下面这种异步用法 很多同学可能只是按照这种写法来编写项目的自动化测试代码,对于具体细节可能并不了解,今天我就来讲一下playwright异步用法的相关技术细节。建议大家拷贝文档中的脚本实际运行一下,学习的

    2024年02月12日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包