Kotlin实现Android点击事件

android中,点击事件大致分为三种写法

1.  Activity实现全局OnClickListener接口
2.匿名内部类
3. 指定xml的onClick属性
今天用Kotlin实现这三种方式实现点击事件
全局实现OnClickListener接口

class MainActivity : AppCompatActivity(), View.OnClickListener {


    // 这种方法与java的区别是没有implements关键字表示实现接口。
    //when就相当于java中的switch。
    //“:”符号改为了“->”。
    override fun onClick(v: View?) {
        when (v?.id) {
            R.id.bt_content ->
                Toast.makeText(this, "这是全局实现OnClickListener接口点击了", Toast.LENGTH_SHORT).show()
        }
    }

    var bt_content: Button? = null
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        bt_content = findViewById(R.id.bt_content)

        //全局实现OnClickListener接口:
        bt_content!!.setOnClickListener(this)

    }

匿名内部类

 fun initView() {
        //匿名内部类:这种方式最简单
        //这里不需要new OnClicklistener。
        bt_content!!.setOnClickListener {
            Toast.makeText(this, "这是匿名内部类点击了", Toast.LENGTH_SHORT).show()
        }
    }

指定onClick属性

    //指定onClick属性:
    fun btContent(v: View?) {
        when (v?.id) {
            R.id.bt_content ->
                Toast.makeText(this, "这是指定onClick属性点击了", Toast.LENGTH_SHORT).show()
        }
    }

XML

 <Button
        android:onClick="btContent"
        android:id="@+id/bt_content"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Hello World!" />

最后全部代码

class MainActivity : AppCompatActivity(), View.OnClickListener {

    // 这种方法与java的区别是没有implements关键字表示实现接口。
    //when就相当于java中的switch。
    //“:”符号改为了“->”。
    override fun onClick(v: View?) {
        when (v?.id) {
            R.id.bt_content ->
                Toast.makeText(this, "这是全局实现OnClickListener接口点击了", Toast.LENGTH_SHORT).show()
        }
    }

    var bt_content: Button? = null
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        bt_content = findViewById(R.id.bt_content)

        //全局实现OnClickListener接口:
        bt_content!!.setOnClickListener(this)

        initView()

    }


    fun initView() {
        //匿名内部类:这种方式最简单
        //这里不需要new OnClicklistener。
        bt_content!!.setOnClickListener {
            Toast.makeText(this, "这是匿名内部类点击了", Toast.LENGTH_SHORT).show()
        }
    }


    //指定onClick属性:
    fun btContent(v: View?) {
        when (v?.id) {
            R.id.bt_content ->
                Toast.makeText(this, "这是指定onClick属性点击了", Toast.LENGTH_SHORT).show()
        }
    }

}



猜你喜欢

转载自blog.csdn.net/xuitfkafd/article/details/80943742