使用Bundle在Activity之间交换数据

2019-04-16  本文已影响0人  ZYiDa

iOSController之间的属性传值有点类似,安卓的Activity之间可以使用Bundle来交换数据.
用下面的例子来说明使用方式:
通过MainActivity启动GetInfoActivityGetInfoActivity将获取MainActivity的一些数据.

第一步

创建Bundle对象,放入需要传递的数据,并使用Intent来携带这个Bundle

        try {
                val personInfo = PersonInfo(
                    userName.text.toString(),
                    userPwd.text.toString(),
                    maleInfo)
                //创建Bundle对象
                val data = Bundle()
                data.putSerializable("PersonInfo",personInfo)
                //创建Intent
                val intent = Intent(this@MainActivity,GetInfoActivity::class.java)
                intent.putExtras(data)
                startActivity(intent)
            }catch (exception:Exception){
                showToast("$exception")
            }

PersonInfo是一个继承Serializable接口的数据类

data class PersonInfo(val name:String,val pwd:String,val gender:String):Serializable;

第二步
GetInfoActivity取出数据

        val intent = intent

        try {
            //取出数据
            personInfo = intent.getSerializableExtra("PersonInfo") as PersonInfo?
            un.text = personInfo?.name
            up.text = personInfo?.pwd
            ug.text = personInfo?.gender
        }catch (exception:Exception){
            print(message = "ERROR:$exception")
        }
效果图

说明

Bundle就是一个小型的数据携带包包含了一些存入和取出数据的方法
Intent通过提多多个重载的方法来携带额外的数据包
上一篇 下一篇

猜你喜欢

热点阅读