Android

关注公众号 jb51net

关闭
首页 > 软件编程 > Android > Kotlin startActivity跳转Activity

Kotlin startActivity跳转Activity实现流程详解

作者:go2coding

在Android当中,Activity的跳转有两种方法,第一个是利用startActivity(Intent intent);的方法,第二个则是利用startActivityForResult(Intent intent,int requestCode);的方法,从字面上来看,这两者之间的差别只在于是否有返回值的区别,实际上也确实只有这两种区别

从一个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,这个才是基础,这里仅仅介绍了跳转的用法,其他的后面还会进行介绍。

到此这篇关于Kotlin startActivity跳转Activity实现流程详解的文章就介绍到这了,更多相关Kotlin startActivity跳转Activity内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文