亲宝软件园·资讯

展开

Kotlin startActivity跳转Activity实现流程详解

go2coding 人气:0

从一个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)

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

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

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()
        }

小结

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

加载全部内容

相关教程
猜你喜欢
用户评论