Kotlin startActivity跳转Activity实现流程详解
目录
- 带参数的调整
- 自定义数据传输
- startActivityForResult
- 小结
从一个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
,这个才是基础,这里仅仅介绍了跳转的用法,其他的后面还会进行介绍。
到此这篇关于Kotlin startActivity跳转Activity实现流程详解的文章就介绍到这了,更多相关Kotlin startActivity跳转Activity内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!