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()
}
}
}