美文网首页
使用Bundle在Activity之间交换数据

使用Bundle在Activity之间交换数据

作者: ZYiDa | 来源:发表于2019-04-16 09:28 被阅读0次

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就是一个小型的数据携带包包含了一些存入和取出数据的方法
  • putXxx(String key,Xxx data)Bundle中放入IntLong等各种类型的数据
  • putSerializable(String key,Serialiable data)Bundle中放入一个可序列化的的对象
  • getXxx(String key)Bundle中取出IntLong等各种类型的数据
  • getSerialiable(String key)Bundle中取出一个可序列化的的对象
Intent通过提多多个重载的方法来携带额外的数据包
  • putExtras(data:Bundle)Intent中放入需要携带的数据包
  • getExtras():Bundle取出Intent中携带的数据包
  • putXxxx(key:String,value:Xxx)Intent中存入key-value形式的数据
  • getXxxExtra(key:String)Intent中取出 key所对应的数据包

相关文章

网友评论

      本文标题:使用Bundle在Activity之间交换数据

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