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

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

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

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 轨迹规划——Bezier曲线与B样条曲线

    轨迹规划——Bezier曲线与B样条曲线一、Bezier曲线1、Bezier曲线的背景给定n+1个数据点,p0~pn,生成一条曲线,使得该曲线与这些点描述的形状相符。(如果要求曲线通过所有数据点,则属于插值问题;如果只要求曲线逼近这些数据点,则属于逼近问题。)2、Bezier曲线的定义p(t)=∑i=0naifi,n(t)p(t)=\sum_{i=0}^na_if_{i,n}(t)p(t)=i=0∑n​ai​fi,n…

    2022年6月20日
  • matlab多重比较lsd法,多重比较LSD-t值的计算(附证明方法)

    matlab多重比较lsd法,多重比较LSD-t值的计算(附证明方法)多重比较LSD-t值的计算问题的提出:向学术期刊投稿时,“变态”的审稿人向你“索要”LSD-t值,可是SPSS的输出结果中没有这个值——是不是有点悲催?!另外,大家还会有一个常见的疑问:采用LSD-t法进行两两比较之后得出来的p值,需不需要调整显著性水平?我们先把原始数据和答案给出来,然后再讲一讲其中的数理逻辑。本例使用的原始数据如下图所示,有兴趣的读者可以用本数据进行对照学习(本例采用单因素方差…

    2022年6月12日
  • notepad主题_python主题更改

    notepad主题_python主题更改转载于:点击这里查看原博客更改jupyternotebook的主题颜色(theme)包括pycharmpython/

    2022年8月27日
  • Linux下如何挂载磁盘[通俗易懂]

    Linux下如何挂载磁盘[通俗易懂]使用虚拟机时发现磁盘空间不够了,需要挂载一个磁盘以供继续使用,但是磁盘不是添加就可以使用的,还需要进行挂载。一、添加磁盘添加加新硬盘重启服务器添加完之后就可以重启机器了,如果你机器是开启的,进入系统并不能看见你刚添加的那块磁盘,只有等系统重启,重新加载之后才会显示安装的那块磁盘二、进入系统使用root用户进入系统三、查看硬盘信息[root@localhost~]#fdi

    2022年6月19日
  • 怎么找出电脑隐藏的软件(如何清理电脑隐藏软件)

    你女朋友打开文件是一张图片,你打开却是各种“视频”,全程高能,搞起来!!!

    2022年4月17日
  • 第 3.2 节 SQL

    第 3.2 节 SQL

    2021年3月12日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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