大佬教程收集整理的这篇文章主要介绍了导致NoSuchMethodError的Kotlin Android Button.onClickListener,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
button.setOnClickListener(Button.onClickListener { fun onClick(view: View){ val intent : Intent = Intent(this,DetailActivity::class.java) if(obj is String) { intent.putExtra("Topic",obj) } startActivity(intent) } })@H_450_5@这是输出的堆栈跟踪 @H_450_5@
java.lang.NoSuchMethodError: No static method OnClickListener(Lkotlin/jvm/functions/Function1;)Landroid/view/View$OnClickListener; in class Landroid/widget/Button; or its super classes (declaration of 'android.widget.button' appears in /system/framework/framework.jar:classes2.deX)@H_450_5@有谁知道什么?
button.setOnClickListener(Button.onClickListener { fun onClick(view: View){ ... } Log.d("TAG","hi") // this is the code that would be executed on click events })@H_450_5@有两种方法可以修复语法: @H_450_5@首先,您可以使用
object
expression来创建监听器,这与您编写的内容非常接近,并且与经典Java解决方案一致,它显式创建了一个匿名类(请注意,OnClickListener接口实际上位于View类之下):
@H_450_5@
button.setOnClickListener(object: View.onClickListener { override fun onClick(v: View?) { val intent = ... } })@H_450_5@或者,您可以使用更简单,更像Kotlin的语法,当您尝试使用之前的长格式时,IDE会建议使用SAM conversion: @H_450_5@
button.setOnClickListener { val intent = ... }@H_450_5@这个解决方案使用lambda就像你的初始代码一样,它只是没有命名它明确转换为什么接口,并且删除了不需要单个lambda参数的().
以上是大佬教程为你收集整理的导致NoSuchMethodError的Kotlin Android Button.onClickListener全部内容,希望文章能够帮你解决导致NoSuchMethodError的Kotlin Android Button.onClickListener所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。