如何在Kotlin中实现setOnClickListener?

我想知道,我们如何在Android开发Kotlin中设置基本onClickListener。

假设你有textView点击

text_view.text = "Hello Kotlin"; text_view.setOnClickListener { val intent = Intent(this@MainActivity, SecondActivity::class.java) intent.putExtra("key", "Kotlin") startActivity(intent) } 

使用下面的代码

 val textview = findViewById(R.id.textview) textview.setOnClickListener(clickListener) val button = findViewById 

clickListener代码。

 val clickListener = View.OnClickListener {view -> when (view.getId()) { R.id.textview -> firstFun() R.id.button -> secondFun() } } 

这里是一个关于如何在Kotlin中使用onClickListener的例子

 button1.setOnClickListener(object : View.OnClickListener{ override fun onClick(v: View?) { //Your code here } 

使用此代码在Kotlin中添加onClickListener

 val button : Button = getView()?.findViewById 

你可以像kotlin中的onclickListener一样使用

 val fab = findViewById(R.id.fab) as FloatingActionButton fab.setOnClickListener { ... } 

首先,您必须获取对视图的引用(比如Button,TextView等),并使用setOnClickListener()方法将OnClickListener设置为引用

 // get reference to button val btn_click_me = findViewById(R.id.btn_click_me) as Button // set on-click listener btn_click_me.setOnClickListener { Toast.makeText(this@MainActivity, "You clicked me.", Toast.LENGTH_SHORT).show() } 

请参阅Kotlin SetOnClickListener示例,了解完整的Kotlin Android示例,其中按钮存在于活动中,并且OnclickListener应用于该按钮。 当你点击按钮时,SetOnClickListener块内的代码被执行。

有几种不同的方法可以达到这个目的,正如这个问题上的各种答案所显示的那样。

为了将侦听器实际分配给视图,可以使用与在Java中相同的方法:

 button.setOnClickListener() 

但是,Kotlin可以轻松地将一个lambda分配给一个监听器:

 button.onSetClickListener { // Listener code } 

或者,如果您想要将此侦听器用于多个视图,请考虑使用lambdaexpression式(将lambda指定给variables/值以供引用):

 val buttonClickListener = View.OnClickListener { view -> // Listener code } button.setOnClickListener(buttonClickListener) another_button.setOnClickListener(buttonClickListener) 

要使用多个ID:

 textview1.setOnClickListener(clickListener) textview2.setOnClickListener(clickListener) 

创建匿名类:

  private val clickListener: View.OnClickListener = View.OnClickListener { view -> when (view.id) { R.id.textview1-> { Toast.makeText(this, "Clicked 1", Toast.LENGTH_SHORT).show() } R.id.iv_circle_nighttime -> { Toast.makeText(this, "Clicked 2", Toast.LENGTH_SHORT).show() } } } 

首先find按钮,为了防止从View ,可以使用<>如下:

 val button = findViewById 

一旦你有一个Button的实例,你现在可以附加点击监听器,如下所示:

 button.setOnClickListener { // You code here } 
 val saveButton:Button = findViewById(R.id.button_save) saveButton.setOnClickListener{ // write code for click event } with view object saveButton.setOnClickListener{ view -> // write code for click event } 

方法1:

 txtNext.setOnClickListener { val intent = Intent(applicationContext, SecondActivity::class.java) startActivity(intent) } 

方法2:

 class FirstActivity : AppCompatActivity(), View.OnClickListener { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_first) txtNext.setOnClickListener(this) } override fun onClick(v: View) { when (v.id) { R.id.txtNext -> { val intent = Intent(applicationContext, SecondActivity::class.java) startActivity(intent) } else -> { // else condition } } } }