kotlin中Activity跳转

kotlin中Activity跳转问题描述:overridefunonClick(widget:View){valintent=Intent(AActivity.this,BActivity::class.java)startActivity(intent)}上面这个在kotlin中会报以下错:Noneofthefollowingfunctionscanbecalled…

大家好,又见面了,我是你们的朋友全栈君。

问题描述:

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可以自行百度了解下

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/143268.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • SQL查询–约束「建议收藏」

    SQL查询–约束「建议收藏」在慕课网上学习时记的关于oracle中约束概念的基础笔记,当初一直对约束的概念不清不楚的,所以找了些资料来看约束是数据库用来确保数据满足业务规则的手段约束的作用:定义规则、确保完整性1.非空约束

  • Ubuntu设置代理服务器

    Ubuntu设置代理服务器由于公司网络的原因,apache的网站访问不了,对于需要经常访问apache网站查看文档的我,最近想了一种方法,在自己的阿里云服务器上搭建一个代理服务器。经过查资料,最终决定使用TinyProxy。首先在代理服务器上安装TinyProxy,安装步骤如下:1.执行以下命令,安装TinyProxyapt-getinstalltinyproxy2.安装成功后,修改配置文件vim…

  • 美化包软件_美化桌面的软件

    美化包软件_美化桌面的软件前言在我们进行自动化测试的时候,用例往往是成百上千,执行的时间是几十分钟或者是小时级别。有时,我们在调试那么多用例的时候,不知道执行到什么程度了,而pytest-sugar插件能很好解决我们的痛点。

  • keil uvision4 注册机 使用方法「建议收藏」

    keil uvision4 注册机 使用方法「建议收藏」1.先安装keiluvision4,然后打开“File”的“LicenseManagement”拷贝CID编号。2、打开KEIL_Lic.exe,“target”选择arm,如下图所示3、把MDK4.12的CID编号粘贴到下图CID里面,点击“Generate”。4、把上图红方框内生成的注册码,拷贝到下图的“NewLicenseIDCode”内

  • XXE攻击与防御

    XXE攻击与防御XXEXXE是一种很常见的漏洞类型危害也挺大的,如果一个web服务器通过用户上传处理XML文件或POST请求时,那么可能就会存在漏洞。前段时间比较出名的微信支付的xxe漏洞漏洞简历XXE就是XML外部实体注入,当服务器允许引用外部实体时,同过构建恶意内容来攻击网站产生原因解析xml文件时允许加载外部实体,并且实体的URL支持file://和PHP://等协议,没有过滤用户提交的参数危害读取任意文件执行系统命令探测内网端口攻击内网网站DOS攻击…漏洞检测利用burp检测那些接

  • debian8升级debian10_debian sources.list

    debian8升级debian10_debian sources.list一、编辑/etc/apt/source.list文件对于之前的squeeze用户,升级还是很简单的.国内的用户直接去换一个源就行了在终端依次输入以下命令,备份老源文件,直接去163下载新源文件即可.#cp/etc/apt/sources.list/etc/apt/squeeze_sources_list#wgethttp://mirrors.163.com/.help/s

    2022年10月10日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号