2017-06-01 489 views

回答

10

使用下面的代码

val textview = findViewById<TextView>(R.id.textview) 
textview.setOnClickListener(clickListener) 

val button = findViewById<Button>(R.id.button) 
button.setOnClickListener(clickListener) 

clickListener代码。

val clickListener = View.OnClickListener {view -> 

    when (view.getId()) { 
     R.id.textview -> firstFun() 
     R.id.button -> secondFun() 
    } 
} 
1

你使用像onclickListener在科特林

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

假设你的TextView点击

text_view.text = "Hello Kotlin"; 

text_view.setOnClickListener { 
    val intent = Intent([email protected], SecondActivity::class.java) 
    intent.putExtra("key", "Kotlin") 
    startActivity(intent) 
} 
5

这里是如何在科特林

button1.setOnClickListener(object : View.OnClickListener{ 
      override fun onClick(v: View?) { 
       //Your code here 
      } 
使用onClickListener为例
0

对于使用多PLE IDS:

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

首先,你必须得到参考视图(说巴顿,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([email protected], "You clicked me.", Toast.LENGTH_SHORT).show() 
} 

参见Kotlin SetOnClickListener Example完整科特林Android示例,其中一个按钮存在的活性和OnclickListener被施加到按钮。当你点击按钮时,SetOnClickListener块内的代码被执行。

+0

很有帮助!与其他答案相比看起来很容易 – Chip

4

使用此代码在科特林添加onClickListener

val button : Button = getView()?.findViewById<Button>(R.id.testButton) as Button 
button.setOnClickListener {view -> 
     Toast.makeText(context, "Write your message here", Toast.LENGTH_LONG).show() 
    } 
} 
0

先找到按钮,防止铸件从View可以使用<>如下:

val button = findViewById<Button>(R.id.button); 

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

button.setOnClickListener { 
// You code here 
} 
1

有几种不同的方法可以实现这一点,正如这个问题的各种答案所示。

到听者真正分配给视图,你用同样的方法,你在Java中会:

button.setOnClickListener() 

然而,科特林可以很容易地拉姆达分配为听众:

button.onSetClickListener { 
    // Listener code 
} 

或者,如果要使用该侦听多个视图,考虑lambda表达式(分配给一个变量/值对参考拉姆达):

val buttonClickListener = View.OnClickListener { view -> 
    // Listener code 
} 

button.setOnClickListener(buttonClickListener) 
another_button.setOnClickListener(buttonClickListener) 
0
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 
} 
0

方法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 
     } 
    } 
    } 
} 
0

,我知道做到这一点是通过科特林的Android扩展的最简单方法。

在您的应用程序/的build.gradle

apply plugin: 'kotlin-android-extensions'

如果你的按钮被称为 'btnAdd',然后在你的片段或活性导入以下内容:

import kotlinx.android.synthetic.main.fragment_transactions.btnAdd

override fun onViewCreated(view: View?, savedInstanceState: Bundle?) { 
    super.onViewCreated(view, savedInstanceState) 

    btnAdd.setOnClickListener { 
     Toast.makeText(context , "Done", 10).show() 
    } 
}