如何在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 } } } }