2017-06-01 368 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() 
    } 
}