xml onClick中的Kotlin不起作用

我学习kotlin,现在对我来说不是一会儿。 我有xml

<ImageView android:id="@+id/aries" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="10dp" android:tag="1" android:onClick="clickItemHoro" android:src="@drawable/aries" /> 

片段

 class ChooseYourHoroscope : Fragment(){ override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { val view = inflater.inflate(R.layout.fragment_welcome_old, container, false) return view; } fun clickItemHoro(v: View?){ Log.e("clickItemHoro", v!!.tag.toString()) } } 

当我点击按钮我有错误:

无法在父级或祖先中找到方法clickItemHoro(View)上下文android:onClick属性在视图类android.support.v7.widget.AppCompatImageView上定义了ID为'aries'

为什么发生? 代码变化简单,但它不工作,我不明白为什么

4 Solutions collect form web for “xml onClick中的Kotlin不起作用”

尝试使用Kotlin扩展插件,它应该工作。

在build.gradle(app)添加apply plugin: 'kotlin-android-extensions'

 apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' 

然后将其导入MainActivity.kt

 import kotlinx.android.synthetic.main.activity_main.* 

应用插件:'kotlin-android-extensions'必须使用kotlin扩展然后它将工作

在Gradle文件中添加

 apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' 

然后活动添加

  import kotlinx.android.synthetic.main.activity_main.* 

如上所述,添加Kotlin扩展是一个好主意,另外,您可以在代码中直接在ImageView上设置onClickListener,而不是在xml文件中声明该方法: onClick

aries.setOnClickListener { doSomething() }

  • 如何访问Koltin中的静态伴侣对象的实例变量
  • Android Keystore?.getKey在某些设备上返回null
  • 将现有的groovy build.gradle文件转换为基于build.gradle.kts的kotlin
  • 什么是对付Kotlin领域的正确方法?
  • 如何在Kotlin中编写Java括号“”?
  • 将函数调用转换为Lambda(SAM)
  • 界面的功能与Property的getter冲突
  • 为什么在构建这个项目时出现“找不到assembly描述符”错误?
  • 如何使用Kotlin的``with`表达式为可空类型
  • 如何为kotlin异常生成serialVersionUID?
  • Android Plugin 2.2.0-alpha1无法与Kotlin编译
  • Kotlin language will be the best programming language for Android.