一般来说,Android点击事件通过kotlin有以下几种实现方式:

1.通过全局接口View.OnClickListener实现,代码如下

//

class MainActivity : AppCompatActivity(),View.OnClickListener{

//...

override fun onClick(v: View?) {

if(v?.id == R.id.btTest){

//do something

}

}

private var btTest: Button? = null

override fun onCreate(savedInstanceState: Bundle?) {

super.onCreate(savedInstanceState)

setContentView(R.layout.activity_main)

btTest = findViewById(R.id.btTest)

//way1

btTest?.setOnClickListener(this)//。。。

}

2.通过简化得匿名函数(即lamda表达式),如下

class MainActivity : AppCompatActivity(){

class MainActivity : AppCompatActivity(){

//...

private var btTest: Button? = null

override fun onCreate(savedInstanceState: Bundle?) {

super.onCreate(savedInstanceState)

setContentView(R.layout.activity_main)

btTest = findViewById(R.id.btTest)

//way2s

btTest?.setOnClickListener {

//do something

}

//。。。

}

3.通过匿名函数,该方法容易理解,但是代码不简便,如下

class MainActivity : AppCompatActivity(){

//...

private var btTest: Button? = null

override fun onCreate(savedInstanceState: Bundle?) {

super.onCreate(savedInstanceState)

setContentView(R.layout.activity_main)

btTest = findViewById(R.id.btTest)

//way3

btTest?.setOnClickListener( fun (v:View):Unit{     //do something

})

//。。。

}

4.通过匿名函数为变量,该方法也容易理解,但是代码不够简便,如下

class MainActivity : AppCompatActivity(){

//...

private var btTest: Button? = null

override fun onCreate(savedInstanceState: Bundle?) {

super.onCreate(savedInstanceState)

setContentView(R.layout.activity_main)

btTest = findViewById(R.id.btTest)

//way4

fOnClicked= View.OnClickListener( fun(v:View):Unit{

//do something

} )

btTest?.setOnClickListener(fOnClicked)  //...

}

private lateinit var fOnClicked:View.OnClickListener

}

比较以上方法,方法1和方法2比较常用,具体按实际需求而定

当然除了上面几种用代码实现的View的点击事件,当然还有在activity布局文件xml中设置点击事件如下:

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

xmlns:app="http://schemas.android.com/apk/res-auto"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context=".MainActivity">

android:id="@+id/btTest"

android:text="Button"

android:layout_width="wrap_content"

android:layout_height="wrap_content" tools:layout_editor_absoluteY="421dp"

tools:layout_editor_absoluteX="167dp"

android:onClick="onTest"

/>

然后在对应得activity中添加点击事件处理功能函数如下:

//...

class MainActivity : AppCompatActivity(){

//...

private var btTest: Button? = null

override fun onCreate(savedInstanceState: Bundle?) {

super.onCreate(savedInstanceState)

setContentView(R.layout.activity_main)

btTest = findViewById(R.id.btTest)

//...

}

//

点击事件处理功能函数

public fun onTest(v:View){

//do something}

}

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐