Kotlin双击打开Activity时出现Intent参数错误如何修复?
错误原因
Intent 构造方法的第一个入参要求传入 Context 类型的上下文对象,你报错行里写的 this 指向的是当前匿名内部类 DoubleClickListener 的实例,不属于 Context 类型,参数类型不匹配导致编译失败。
修复方案
三种常用修复方式任选其一即可:
- 方式一:明确引用外层Activity实例作为上下文
如果这段代码写在Activity类中,将 this 替换为this@[你的Activity类名],比如你的Activity类名为MainActivity,代码为:val screenFull = Intent(this@MainActivity, FullScreen::class.java) - 方式二:复用已有的ApplicationContext
你上一行Toast代码已经用到了applicationContext,可以直接复用:val screenFull = Intent(applicationContext, FullScreen::class.java) - 方式三:从View参数获取上下文
从onDoubleClick方法传入的View参数中获取上下文:val screenFull = Intent(v?.context, FullScreen::class.java)
修正后完整代码片段
countDownTimer.setOnClickListener(object : DoubleClickListener() { override fun onDoubleClick(v: View?) { Toast.makeText(applicationContext,"Full Screen Mode!",Toast.LENGTH_SHORT).show() // 此处替换为你选择的上下文即可,示例以指定Activity上下文为例 val screenFull = Intent(this@MainActivity, FullScreen::class.java) startActivity(screenFull) } }) // 以下DoubleClickListener代码无需修改 abstract class DoubleClickListener : View.OnClickListener { var lastClickTime: Long = 0 override fun onClick(v: View?) { val clickTime = System.currentTimeMillis() if (clickTime - lastClickTime < DOUBLE_CLICK_TIME_DELTA) { onDoubleClick(v) } lastClickTime = clickTime } abstract fun onDoubleClick(v: View?) companion object { private const val DOUBLE_CLICK_TIME_DELTA: Long = 300 //单位:毫秒 } }
内容的提问来源于stack exchange,提问作者Shagufta
相关产品推荐
相关产品推荐

