kotlin 学习 activity跳转

本文介绍了Kotlin中实现界面跳转的多种方法,并详细展示了从原始写法到使用Kotlin高阶函数优化的全过程。通过inline函数进一步简化跳转过程,使代码更加简洁高效。

最原始写法

//其中OneActivity 可以直接写this,都懂不需要在教
val intent=Intent(OneActivity,TwoActivity::class.java)
intent.putExtra("","")
startActivity(intent)

优化一遍的写法(使用了函数写法)

kotlin有run、apply、with、let 、also 这些优化的写法,具体看个人写法

val intent=Intent(OneActivity,TwoActivity::class.java).also{
	it.putExtra("","")
	
}
  val intent=Intent().apply {
            putExtra("","")
        }
        等写法...

再次优化写法(使用unit无返回值的写法)

 /**
     * 无返回值跳转activity
     * @param T 需要跳转的activity
     * @param context当前activity
     */
    inline fun <reified T> startActivity(context: Context,block: Intent.()->Unit){
        val intent=Intent(context,T::class.java)
        intent.block()
        context.startActivity(intent)
    }

用法很简单,下面是用法

 Utils.startActivity<MainActivity2>(this@MainActivity) {
 //这里是你想传递给下一个界面的参数
            putExtra("","")
        }
        //如果不需要传递参数可直接忽视{}的数据
         Utils.startActivity<MainActivity2>(this@MainActivity) {}   
### Kotlin 中实现 Activity 之间跳转Kotlin 中,可以通过 `Intent` 对象来实现在不同 Activity 之间的跳转。以下是具体的实现方式: #### 使用显式 Intent 进行跳转 下面是一个完整的示例代码,展示如何从一个 Activity 跳转到另一个 Activity。 ```kotlin fun jumpToNextActivity(view: View) { val intent = Intent(this, Main2Activity::class.java) // 创建一个新的 Intent 并指定目标 Activity 的类名 startActivity(intent) // 启动新的 Activity } ``` 此代码片段展示了如何创建并启动一个新的 `Intent` 来完成两个 Activity 间的跳转[^1]。 --- #### 带参数的跳转 如果需要传递一些数据给下一个 Activity,则可以使用 `putExtra()` 方法向 `Intent` 添加键值对。 ```kotlin fun jumpWithParameters(view: View) { val intent = Intent(this, Main2Activity::class.java) intent.putExtra("key", "value") // 将 key-value 数据附加到 Intent 上 startActivity(intent) } ``` 在目标 Activity (`Main2Activity`) 中,可以通过以下方式提取这些数据: ```kotlin override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main2) val value = intent.getStringExtra("key") // 提取传递过来的数据 println(value) // 输出接收到的数据 } ``` 以上代码实现了带参数的跳转功能,并演示了如何在目标 Activity 中读取传递的数据[^1]。 --- #### 返回结果的跳转 当需要从第二个 Activity 返回数据时,可以在第一个 Activity 中调用 `startActivityForResult()` 方法发起请求,并在回调函数中处理返回的结果。 ##### 发起带有结果的跳转 ```kotlin val REQUEST_CODE = 100 fun startForResult(view: View) { val intent = Intent(this, Main2Activity::class.java) startActivityForResult(intent, REQUEST_CODE) // 设置请求码以便识别响应 } ``` ##### 处理返回结果 重写 `onActivityResult` 函数以捕获来自其他 Activity 的返回数据。 ```kotlin @Deprecated("Deprecated in Java") @Override protected fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) { val resultData = data?.getStringExtra("result_key") // 获取返回的数据 println(resultData) // 打印返回的数据 } } ``` 在目标 Activity (`Main2Activity`) 中设置返回数据的方式如下: ```kotlin fun finishAndSendResult(view: View) { val intent = Intent() intent.putExtra("result_key", "This is the returned data!") // 设置要返回的数据 setResult(RESULT_OK, intent) // 设置返回状态为成功 finish() // 结束当前 Activity 并返回上一页面 } ``` 上述代码完成了从 A 页面跳转至 B 页面后再返回的过程,并携带了必要的数据交互[^2]。 --- ### 总结 通过 `Intent` 可以轻松实现 Android 应用中的 Activity 切换操作,在实际开发过程中可以根据需求灵活调整是否附带额外参数以及是否有返回结果的要求。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值