Kotlin startActivity跳转Activity实现流程详解

 更新时间:2022年12月05日 10:20:27   作者: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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Kotlin注解与反射的定义及创建使用详解

    Kotlin注解与反射的定义及创建使用详解

    这篇文章主要为大家介绍了Kotlin注解与反射的定义及使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • Android开发MediaCodec和lamemp3多段音频截取拼接

    Android开发MediaCodec和lamemp3多段音频截取拼接

    这篇文章主要为大家介绍了Android开发使用MediaCodec和lamemp3实现多段音频截取拼接的编程示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-04-04
  • Android中DrawerLayout实现侧滑菜单效果

    Android中DrawerLayout实现侧滑菜单效果

    这篇文章主要为大家详细介绍了Android中DrawerLayout实现侧滑菜单效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • PHP autoload 机制详解

    PHP autoload 机制详解

    本文主要介绍 PHP autoload 机制,这里整理了详细的知识资料供大家学习参考,希望能帮助有需要的小伙伴
    2016-08-08
  • Android实现向本地写入一个XML文件和解析XML文件

    Android实现向本地写入一个XML文件和解析XML文件

    这篇文章主要介绍了Android实现向本地写入一个XML文件和解析XML文件,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • Android中home键和back键区别实例分析

    Android中home键和back键区别实例分析

    这篇文章主要介绍了Android中home键和back键区别,以实例形式较为详细的分析并总结了home键和back键区别及使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-09-09
  • Flutter实现底部导航栏创建详解

    Flutter实现底部导航栏创建详解

    ConvexBottomBar是一个底部导航栏组件,用于展现凸起的TAB效果,支持多种内置样式与动画交互。本文将利用ConvexBottomBar创建漂亮的底部导航栏,感兴趣的可以学习一下
    2022-01-01
  • Android仿iOS侧滑退出当前界面功能

    Android仿iOS侧滑退出当前界面功能

    这篇文章主要为大家详细介绍了Android仿iOS侧滑退出当前界面功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • android和服务器的URLEncodedUtils乱码编码问题的解决方案

    android和服务器的URLEncodedUtils乱码编码问题的解决方案

    今天小编就为大家分享一篇关于android和服务器的URLEncodedUtils乱码编码问题的解决方案,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • Android中EditText禁止输入表情的实例代码

    Android中EditText禁止输入表情的实例代码

    本篇文章主要介绍了Android中EditText禁止输入表情的实例代码,具有一定的参考价值,有兴趣的可以了解一下
    2017-08-08

最新评论