wake-up-neo.com

Android - So erreichen Sie setOnClickListener in Kotlin

Ich wollte wissen, wie wir in Kotlin für Android-Entwicklung grundlegende onClickListener festlegen.

43
Anirudh Agarwal

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)
}
37

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()
    }
}
23
Akash Patel

Hier ein Beispiel zur Verwendung des onClickListener in Kotlin

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

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
        }
    }
  }
}
9
Ronak Thakkar

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()
        }
    }
}
6
Luvnish Monga

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

Einfach wie folgt vorgehen:

button.setOnClickListener{doSomething()}

2
Kishan V

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
}
2
hadilq
   button.setOnClickListener {
          //write your code here
   }
2
Resmi Venugopal

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)
2
RedBassett

Sie können OnClickListener einfach in kotlin erhalten

view1.setOnClickListener{

//body 

}
2
Android Geek

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 .

1
Mallikarjun M

Sie verwenden diesen OnclickListener in Kotlin

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

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
    }
}
1
Maihan Nijat
    val button = findViewById<Button>(R.id.button)
    button.setOnClickListener {
        val intent = 
    Intent([email protected],ThirdActivity::class.Java)
        intent.putExtra("key", "Kotlin")
        startActivity(intent)
    }
1
Vinay John
**i have use kotlin-extension so i can access directly by button id:**


btnSignIN.setOnClickListener {
            if (AppUtils.isNetworkAvailable(activity as BaseActivity)) {
                if (checkValidation()) {

                    hitApiLogin()
                }
            }
        }
1
abhilasha Yadav

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


        }
    }
0
Jyot

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
}
0
Joseph

var tv = findViewById (R.id.tv) als TextView

    tv.setOnClickListener {
       val i = Intent([email protected], SecondActivity::class.Java)
       startActivity(i)
       finish()
    }
0
CHANDAN KUMAR
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
Ajay Prajapati
findViewById<Button>(R.id.signUp)?.setOnClickListener(
    Toast.makeText(mActivity, "Button Clicked", Toast.LENGTH_LONG).show()
)
0
user3694157

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!
    }})
0
user2288580

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()
    }
}
0
isijara