Kotlin startActivity跳转Activity实现流程详解
go2coding 人气:0从一个Activity
跳到另一个Activity
在编写安卓代码是最常见的事情了。我们不可能在一个页面中,把所有的事情都做完。
在kotlin
中跳转的程序也比较简单,跟java
差不多。如果熟悉java
代码的话,只需要把代码改变过来而已。
带参数的调整
从一个Activity
跳到另一个Activity
中,如同调用函数一样,可以把数据传递给另外的Activity
中,Activity
在接受到这个数据后,可以根据数据的情况进行相应的处理操作。
对于跳转Activity
,android
中使用的是 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)
这里我们从MainActivity
,跳到 MainActivity2
中去,我们传递的字段为request_time
,在intent
中用putExtra
放入。
在 MainActivity2
中直接用intent
的getStringExtra
来取得相关的字段。
tv_activity.setText(intent.getStringExtra("request_time"))
自定义数据传输
大多数,我们不仅仅只是想传递一个 基础类型的数据,对于自定义的类或者数据也是可以做得到的,这点Kotlin
看起来会简单多了,特别是创建Parcelable
。
创建一个自定义数据类型:
@Parcelize data class MessageInfo(val content:String,val sent_text:String):Parcelable { }
@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) }
使用putParcelableArrayListExtra
把相关的数据放入。接收端同样的来接收数据类型:
var messages = intent.getParcelableArrayListExtra<MessageInfo>("request")
startActivityForResult
在跳转后的页面,如果在跳转回去的时候,也可以设置相应的回调参数,和回调状态值。在startActivity
的时候,换为startActivityForResult
,重载onActivityResult
的方法,就可以得到返回的数值。
btn_activity2.setOnClickListener { var intent:Intent = Intent(applicationContext,MainActivity2::class.java) startActivityForResult(intent,9) }
重载onActivityResult
方法,等待返回结果:
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) } }
在 MainActivity2
页面中,用Intent
的方式来跳回原来的页面。
btn_activity20.setOnClickListener { var intent: Intent = Intent() setResult(0,intent) this.finish() }
小结
Activity
android 四大组件之一,后面其他的组件还会一一的进行介绍,Activity
其实有很多东西可以学习,特别是看看他的源代码,会发现很多可以用的技巧,但是还是得先学会怎么使用Activity
,这个才是基础,这里仅仅介绍了跳转的用法,其他的后面还会进行介绍。
加载全部内容