问题描述:
override fun onClick(widget: View) {
val intent = Intent(AActivity.this, BActivity::class.java)
startActivity(intent)
}
上面这个在kotlin中会报以下错:
None of the following functions can be called with the arguments supplied.
<init>(Context!, Class<*>!) defined in android.content.Intent
<init>(String!, Uri!) defined in android.content.Intent
分析问题:
这是因为kotlin中不能像java那样使用AActivity.this,kotlin无法识别为Context
解决问题:
网上很多写法是这样的:
override fun onClick(widget: View) {
val intent = Intent(AActivity@this, BActivity::class.java)//AActivity@this这种写法是错误的
startActivity(intent)
}
但是发现还是报错了,正确的写法应该是这样的:
override fun onClick(widget: View) {
val intent = Intent(this@AActivity, BActivity::class.java)//正确写法
startActivity(intent)
}
网上还有一些kotlin优雅的写法:
//正常跳转
startActivity<RegisterActivity>()
//携带参数
startActivity<ResetPwdActivity>("key" to "value")
//A页面跳到B页面,再跳到C页面,再跳到A页面时,要求清空B,C页面退出,并且不重走A的生命周期(后退回首页)
startActivity(intentFor<MainActivity>().singleTop().clearTop())
//A页面跳到B页面,再跳到C页面,再跳到A页面时,要求清空B,C页面退出,并且重走A的生命周期(退出登录/登录成功)
startActivity(intentFor<MainActivity>().clearTask().newTask())
//A页面->B页面->C页面->D页面时,销毁A.B.C这三个页面,整个栈中就D页面
startActivity(intentFor<LoginActivity>().newTask().clearTask())
但是试了一下发现报错了,原来这并不是kotlin自带的写法,需要配合Anko才能使用这种写法,关于Anko可以自行百度了解下
今天的文章kotlin中Activity跳转分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/33044.html