• Kotlin 开发Android app(十四):startActivity跳转Activity活动


    从一个Activity跳到另一个Activity 在编写安卓代码是最常见的事情了。我们不可能在一个页面中,把所有的事情都做完。

    kotlin中跳转的程序也比较简单,跟java差不多。如果熟悉java代码的话,只需要把代码改变过来而已。

    在这里插入图片描述

    带参数的调整

    从一个Activity跳到另一个Activity 中,如同调用函数一样,可以把数据传递给另外的Activity中,Activity在接受到这个数据后,可以根据数据的情况进行相应的处理操作。

    对于跳转Activityandroid 中使用的是 startActivity ,在startActivity 的时候可以传递进去一个Intent,这个Intent可以把要传递的Activity和参数都塞进去,使用的方法如下:

                val sdf = SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
                var intent:Intent = Intent(applicationContext,MainActivity2::class.java)
                intent.putExtra("request_time",  sdf.format(Date()))
                startActivity(intent)
    
    • 1
    • 2
    • 3
    • 4

    这里我们从MainActivity,跳到 MainActivity2中去,我们传递的字段为request_time,在intent中用putExtra放入。

    MainActivity2 中直接用intentgetStringExtra 来取得相关的字段。

    tv_activity.setText(intent.getStringExtra("request_time"))
    
    • 1

    在这里插入图片描述

    自定义数据传输

    大多数,我们不仅仅只是想传递一个 基础类型的数据,对于自定义的类或者数据也是可以做得到的,这点Kotlin 看起来会简单多了,特别是创建Parcelable

    创建一个自定义数据类型:

    @Parcelize
    data class MessageInfo(val content:String,val sent_text:String):Parcelable
    {
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    @Parcelize注解 帮我们把Parcelize的接口都实现了。

    传递数据类型,启动相关的页面:

            btn_activity1.setOnClickListener{
                val sdf = SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
                var message:MessageInfo = MessageInfo("hello MainActivity2",sdf.format(Date()))
                var intent:Intent = Intent(applicationContext,MainActivity2::class.java)
                intent.putParcelableArrayListExtra("request", arrayListOf(message))
                startActivity(intent)
            }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    使用putParcelableArrayListExtra 把相关的数据放入。接收端同样的来接收数据类型:

    var messages = intent.getParcelableArrayListExtra<MessageInfo>("request")
    
    • 1
    startActivityForResult

    在跳转后的页面,如果在跳转回去的时候,也可以设置相应的回调参数,和回调状态值。在startActivity 的时候,换为startActivityForResult,重载onActivityResult 的方法,就可以得到返回的数值。

            btn_activity2.setOnClickListener {
                var intent:Intent = Intent(applicationContext,MainActivity2::class.java)
                startActivityForResult(intent,9)
            }
    
    • 1
    • 2
    • 3
    • 4

    重载onActivityResult方法,等待返回结果:

        override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
            super.onActivityResult(requestCode, resultCode, data)
        }
    }
    
    • 1
    • 2
    • 3
    • 4

    MainActivity2页面中,用Intent的方式来跳回原来的页面。

            btn_activity20.setOnClickListener {
                var intent: Intent = Intent()
                setResult(0,intent)
                this.finish()
    
            }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    小结

    Activityandroid 四大组件之一,后面其他的组件还会一一的进行介绍,Activity 其实有很多东西可以学习,特别是看看他的源代码,会发现很多可以用的技巧,但是还是得先学会怎么使用Activity,这个才是基础,这里仅仅介绍了跳转的用法,其他的后面还会进行介绍。

  • 相关阅读:
    基于RFID技术的烟草供应链数字化管理方案
    LDO的前世今生
    .NET 使用自带 DI 批量注入服务(Service)和 后台服务(BackgroundService)
    C++对多继承的理解
    使用ajax上传文件
    vscode提交git代码总是需要输入账号密码问题
    对垃圾回收的简单了解
    推荐系统_所有评价模块
    Day 4 Qt
    聊一聊系统重构
  • 原文地址:https://blog.csdn.net/weixin_40425640/article/details/127981019