美文网首页
Kotlin笔记(42) — Activity接收界面关闭返回值

Kotlin笔记(42) — Activity接收界面关闭返回值

作者: 奔跑的佩恩 | 来源:发表于2021-01-27 10:35 被阅读0次

前言

Android开发过程中,我们有时会遇到关闭第二个界面,然后把数据返回给第一个界面的情况。在kotlin中,这种关闭反传值的实现,也是用startActivityForResult方法。那么接下来,就让我们学习下关闭Activity接收返回值的实现吧。

今天涉及知识

  1. kotlin实现关闭界面获取返回值
  2. 关闭界面获取返回值anko的简化实现
  3. 具体在Activity中的使用示例
  4. 效果图

先来波效果图


效果图.gif

一. kotlin 实现关闭界面获取返回值

以从MainActivity跳转到TempActivty界面,然后关闭TempActivty界面,给MainActivity界面回传值为例。
MainActivity界面点击做跳转时,代码如下:

               //跳转到TempActivity 
               var intent:Intent=Intent(this@MainActivity,TempActivity::class.java)
               startActivityForResult(intent,100)

TempActivity界面关闭TempActivity时的操作如下:

            var user:User= User("测试",123)
            var intent: Intent =Intent()
            intent.putExtra("user",user)
            setResult(Activity.RESULT_OK,intent)

            //关闭当前界面
            finish()

然后在MainActivity界面重写onActivityResult(requestCode: Int, resultCode: Int, data: Intent?)接收返回值:

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)

        if(requestCode==100&&resultCode==Activity.RESULT_OK){
            var user:User=data!!.extras!!.getParcelable<User>("user") as User
            LogUtil.i("===返回值=====name=${user.name} age=${user.age}")
            toast("===返回值=====name=${user.name} age=${user.age}")
        }
    }

二. 关闭界面获取返回值anko的简化实现

anko加持下,TempActivity点击关闭和MainActivity界面接收返回值处理onActivityResult(requestCode: Int, resultCode: Int, data: Intent?)方法中代码处理一样,没啥变化。主要看MainActivity跳转到 TempActivity界面的一段代码:

相关文章

网友评论

      本文标题:Kotlin笔记(42) — Activity接收界面关闭返回值

      本文链接:https://www.haomeiwen.com/subject/zadezktx.html