Ich wollte wissen, wie wir in Kotlin für Android-Entwicklung grundlegende onClickListener festlegen.
Angenommen, Sie haben textView zum Klicken
text_view.text = "Hello Kotlin";
text_view.setOnClickListener {
val intent = Intent([email protected], SecondActivity::class.Java)
intent.putExtra("key", "Kotlin")
startActivity(intent)
}
Verwenden Sie den folgenden Code
val textview = findViewById<TextView>(R.id.textview)
textview.setOnClickListener(clickListener)
val button = findViewById<Button>(R.id.button)
button.setOnClickListener(clickListener)
clickListener code.
val clickListener = View.OnClickListener {view ->
when (view.getId()) {
R.id.textview -> firstFun()
R.id.button -> secondFun()
}
}
Hier ein Beispiel zur Verwendung des onClickListener in Kotlin
button1.setOnClickListener(object : View.OnClickListener{
override fun onClick(v: View?) {
//Your code here
})
Methode 1:
txtNext.setOnClickListener {
val intent = Intent(applicationContext, SecondActivity::class.Java)
startActivity(intent)
}
Methode 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
}
}
}
}
Für die Verwendung mehrerer IDs:
textview1.setOnClickListener(clickListener)
textview2.setOnClickListener(clickListener)
Anonyme Klasse erstellen:
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.textview2-> {
Toast.makeText(this, "Clicked 2", Toast.LENGTH_SHORT).show()
}
}
}
Verwenden Sie diesen Code, um onClickListener
in Kotlin hinzuzufügen
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()
}
}
Einfach wie folgt vorgehen:
button.setOnClickListener{doSomething()}
Ich sehe hier viele Vorschläge, aber dieser Sammlung fehlt Folgendes.
button.setOnClickListener(::onButtonClicked)
und in der aktuellen Klasse haben wir eine Methode wie folgt:
private fun onButtonClicked(view: View) {
// do stuff
}
button.setOnClickListener {
//write your code here
}
Dies kann auf verschiedene Weise erreicht werden, wie die unterschiedlichen Antworten auf diese Frage zeigen.
Um den Listener tatsächlich der Ansicht zuzuweisen, verwenden Sie dieselben Methoden wie in Java:
button.setOnClickListener()
Kotlin macht es jedoch leicht, ein Lambda als Zuhörer zuzuweisen:
button.onSetClickListener {
// Listener code
}
Wenn Sie diesen Listener für mehrere Ansichten verwenden möchten, betrachten Sie alternativ einen Lambda-Ausdruck (ein Lambda, das einer Variablen/einem Wert als Referenz zugewiesen ist):
val buttonClickListener = View.OnClickListener { view ->
// Listener code
}
button.setOnClickListener(buttonClickListener)
another_button.setOnClickListener(buttonClickListener)
Sie können OnClickListener einfach in kotlin erhalten
view1.setOnClickListener{
//body
}
Zuerst müssen Sie den Verweis auf die Ansicht (z. B. Button, TextView usw.) abrufen und einen OnClickListener mithilfe der setOnClickListener () - Methode auf den Verweis setzen
// 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()
}
Siehe Kotlin SetOnClickListener Example für ein komplettes Kotlin Android-Beispiel, in dem eine Schaltfläche in einer Aktivität vorhanden ist und OnclickListener auf die Schaltfläche angewendet wird. Wenn Sie auf die Schaltfläche klicken, wird der Code im SetOnClickListener-Block ausgeführt.
Update
Jetzt können Sie die Schaltfläche direkt mit ihrer ID referenzieren, indem Sie die folgende Importanweisung in die Class-Datei einfügen. Dokumentation .
import kotlinx.Android.synthetic.main.activity_main.*
und dann für den Button
btn_click_me.setOnClickListener {
// statements to run when button is clicked
}
Siehe Android Studio Tutorial .
Sie verwenden diesen OnclickListener in Kotlin
val fab = findViewById(R.id.fab) as FloatingActionButton
fab.setOnClickListener {
...
}
Ein einfacher Weg wäre, einen Klicklistener zu registrieren und einen Klicklistener mit einem Lambda-Ausdruck zu erstellen.
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// click listener registered
myButton.setOnClickListener(clickListener)
}
Und implementiere die clickListener
:
private val clickListener: View.OnClickListener = View.OnClickListener { _ ->
// do something here
}
Sie können _
durch einen Namen ersetzen, wenn Sie die Ansicht benötigen, um ihn zu verwenden. Beispielsweise müssen Sie die ID des Klicklisteners überprüfen.
private val clickListener: View.OnClickListener = View.OnClickListener { view ->
if(view.id == login.id) {
// do something here
}
}
val button = findViewById<Button>(R.id.button)
button.setOnClickListener {
val intent =
Intent([email protected],ThirdActivity::class.Java)
intent.putExtra("key", "Kotlin")
startActivity(intent)
}
**i have use kotlin-extension so i can access directly by button id:**
btnSignIN.setOnClickListener {
if (AppUtils.isNetworkAvailable(activity as BaseActivity)) {
if (checkValidation()) {
hitApiLogin()
}
}
}
Fügen Sie den clickListener-Button so hinzu
btUpdate.setOnClickListener(onclickListener)
fügen Sie diesen Code in Ihre Aktivität ein
val onclickListener: View.OnClickListener = View.OnClickListener { view ->
when (view.id) {
R.id.btUpdate -> updateData()
}
}
Suchen Sie zuerst die Schaltfläche. Um die Umwandlung von View
zu verhindern, können Sie <>
wie folgt verwenden:
val button = findViewById<Button>(R.id.button);
Sobald Sie eine Instanz von Button
haben, können Sie den Klicklistener wie folgt anhängen:
button.setOnClickListener {
// You code here
}
var tv = findViewById (R.id.tv) als TextView
tv.setOnClickListener {
val i = Intent([email protected], SecondActivity::class.Java)
startActivity(i)
finish()
}
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
}
findViewById<Button>(R.id.signUp)?.setOnClickListener(
Toast.makeText(mActivity, "Button Clicked", Toast.LENGTH_LONG).show()
)
Wenn Sie die alte anonyme Art und Weise in Kotlin simulieren möchten, habe ich festgestellt, dass dies perfekt funktioniert hat.
btnNewWay!!.setOnClickListener(object:View.OnClickListener {
override fun onClick(v: View?) {
//Your Code Here!
}})
Der einfachste Weg, den ich kenne, um dies zu erreichen, ist über Kotlin Android Extensions.
In deiner App/build.gradle
apply plugin: 'kotlin-Android-extensions'
Wenn Ihre Schaltfläche "btnAdd" heißt, importieren Sie auf Ihrem Fragment oder Ihrer Aktivität Folgendes:
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()
}
}