Verwendung von setOnClickListener in Kotlin

David Mbochi Njonge 30 Januar 2023
  1. Erstellen Sie ein neues Projekt und fügen Sie eine Schaltfläche in Kotlin hinzu
  2. Verwendung von setOnClickListener() ohne Callback in Kotlin
  3. Verwendung von setOnCliclListener() mit einem Callback in Kotlin
  4. Verwendung von setOnClickListener() mit einem Lambda-Ausdruck in Kotlin
  5. Verwendung von die Schnittstelle View.OnClickListener für die Klasse MainActivity in Kotlin
Verwendung von setOnClickListener in Kotlin

Die Methode setOnClickListener() ist ein Event-Listener, was bedeutet, dass sie nur aufgerufen wird, wenn ein Ereignis wie ein Klick auf eine Schaltfläche aufgetreten ist. Der setOnClickListener() ist eine Methode der Klasse View und kann mit jeder Klasse verwendet werden, die davon erbt.

In diesem Tutorial verwenden wir einen Button, um die Methode in Aktion zu testen. Die Klasse Button erbt die Methode von der Klasse TextView, die wiederum die Methode von der Basisklasse View erbt.

Erstellen Sie ein neues Projekt und fügen Sie eine Schaltfläche in Kotlin hinzu

Gehen Sie zu Ihrer Entwicklungsumgebung und erstellen Sie ein neues Android-Projekt mit einer leeren Aktivität. Stellen Sie sicher, dass Kotlin die ausgewählte Sprache für diese Anwendung ist.

Um eine Button-Komponente zu erstellen, gehen Sie zur Datei activity_main.xml im Ordner Layout und fügen Sie den folgenden XML-Code in das ConstraintLayout ein.

<Button
            android:text="Click me"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" android:id="@+id/click_me_btn"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"/>

Verwendung von setOnClickListener() ohne Callback in Kotlin

Gehen Sie zur Klasse MainActivity von Kotlin und fügen Sie den folgenden Code in die Methode onCreate() direkt nach der Methode setContentView() ein.

  val clickMeBtn: Button = findViewById(R.id.click_me_btn)

        clickMeBtn.setOnClickListener {
            val toast = Toast
                .makeText(applicationContext,
                "You have clicked me",
                Toast.LENGTH_SHORT).show()
        }

Die Methode findViewById() hilft uns, die Schaltfläche abzurufen, die wir in unserem Layout erstellt haben, indem wir die für diese Komponente eindeutige ID verwenden. Diese Methode kann jede Komponente abrufen, die von der Klasse View erbt, da es sich um eine generische Methode handelt.

Die Methode setOnClickListener() verwendet einen Callback als Argument, aber wir fügen die auszuführende Aktion direkt in diese Methode ein, ohne ihr einen Callback zu übergeben.

Möglich wird dies durch die Annotation @Nullable, die der Methode hinter den Kulissen hinzugefügt wurde. Die Anmerkung gibt an, dass der Parameter optional oder null sein kann.

Beachten Sie, dass bei der Verwendung der Methode setOnClickListener() die Schaltfläche zunächst als anklickbar festgelegt wird, wenn sie nicht anklickbar ist.

Wir haben einen Text mit der statischen Methode makeText() der Klasse Toast erstellt, und diese Nachricht wird für kurze Zeit auf dem Bildschirm angezeigt und verschwindet dann.

Führen Sie die Anwendung aus

Drücken Sie das Ausführen-Symbol oben rechts in der IDE-Symbolleiste, um die Anwendung auszuführen. Das folgende Bild zeigt die Position der Schaltfläche Ausführen.

laufende Anwendung

Dadurch wird die Anwendung ausgeführt, das virtuelle Gerät gestartet und auf dem virtuellen Gerät installiert. Wenn Sie auf die Schaltfläche CLICK ME drücken, wird unten auf dem Bildschirm eine Meldung mit der Bezeichnung You have clicked me angezeigt, wie unten gezeigt.

Kotlin-Toast-Nachricht

Verwendung von setOnCliclListener() mit einem Callback in Kotlin

Wie wir im vorherigen Beispiel erwähnt haben, hat die Methode setOnClickListener() einen optionalen Parameter View.OnClickListener, der ein Callback für die Methode onClick() ist.

Gehen Sie zur Klasse MainActivity und fügen Sie den folgenden Code in die Methode onCreate() direkt unter der Methode setContentView() ein. Stellen Sie sicher, dass Sie das vorherige Beispiel kommentieren.

 val clickMeBtn: Button = findViewById(R.id.click_me_btn)

 clickMeBtn.setOnClickListener(object : View.OnClickListener{
            override fun onClick(view: View?) {
                val toast = Toast
                    .makeText(applicationContext,
                    "You have clicked me",
                    Toast.LENGTH_SHORT).show()
            }
        })

Im obigen Beispiel haben wir den Callback View.OnClickLictener an die Methode übergeben und die Methode onClick() überschrieben.

Die Methode onClick() hat einen Parameter vom Typ View, der die angeklickte Ansicht angibt. Sie können die Ansicht innerhalb des onClick() verwenden, um beliebige Methoden auszuführen, wie z. B. das Ändern der Hintergrundfarbe.

In diesem Beispiel haben wir genau wie im vorherigen Beispiel eine Toast-Meldung angezeigt. Verwenden Sie dieselben Schritte, die wir zum Ausführen und Testen der Anwendung verwendet haben, und Sie erhalten dieselben Ergebnisse.

Verwendung von setOnClickListener() mit einem Lambda-Ausdruck in Kotlin

Dieses Beispiel ähnelt dem oben behandelten, aber wir konvertieren es in einen Lambda-Ausdruck, anstatt die onClick()-Methode unseres Callbacks zu überschreiben.

Gehen Sie zur Klasse MainActivity und fügen Sie den folgenden Code in die Methode onCreate() direkt nach der Methode setContentView() ein. Stellen Sie sicher, dass Sie das vorherige Beispiel kommentieren.

 val clickMeBtn: Button = findViewById(R.id.click_me_btn)

 clickMeBtn.setOnClickListener(View.OnClickListener { view ->
            Toast.makeText(applicationContext,
                "You have clicked me",
            Toast.LENGTH_SHORT).show()
         })

Da wir Zugriff auf die angeklickte Ansicht haben, können wir jede Methode ausführen, aber wir zeigen in diesem Beispiel nur eine Toast-Meldung an.

Verwenden Sie die gleichen Schritte, die wir zum Ausführen und Testen des ersten Beispiels verwendet haben, und Sie erhalten eine Toast-Meldung auf dem Bildschirm, wie wir in den anderen Beispielen gesehen haben.

Verwendung von die Schnittstelle View.OnClickListener für die Klasse MainActivity in Kotlin

Der View.OnClickListener-Callback ist eine Schnittstelle, und wir können diese Schnittstelle in der MainActivity-Klasse implementieren, wie unten gezeigt.

class MainActivity : AppCompatActivity(), View.OnClickListener {
}

Sobald wir die Schnittstelle implementiert haben, müssen wir die Methode onClick() innerhalb dieser Klasse implementieren. Kopieren Sie den folgenden Code und fügen Sie ihn in die Klasse MainActivity ein.

    override fun onClick(view: View?){
        when(view?.id){
            R.id.click_me_btn -> {
                Toast.makeText(applicationContext,
                "You have clicked me",
                Toast.LENGTH_SHORT).show()
            }
        }
    }

Die onClick()-Methode verschafft uns Zugriff auf die angeklickte Ansicht, aber da wir die Komponente nicht nach ID abrufen, müssen wir die when-Anweisung verwenden, die genauso funktioniert wie die switch-Anweisung, um die zu identifizieren Komponente, auf die geklickt wurde.

Wenn die id mit der id des click_me_btn übereinstimmt, wird die Funktionalität ausgeführt, die innerhalb der Pfeilfunktion folgt. In diesem Beispiel zeigen wir nur eine Toast-Meldung auf dem Bildschirm an.

Verwenden Sie die gleichen Schritte, die wir zum Ausführen und Testen der vorherigen Beispiele verwendet haben. Dieses Beispiel zeigt dieselben Ergebnisse wie erwartet.

David Mbochi Njonge avatar David Mbochi Njonge avatar

David is a back end developer with a major in computer science. He loves to solve problems using technology, learning new things, and making new friends. David is currently a technical writer who enjoys making hard concepts easier for other developers to understand and his work has been published on multiple sites.

LinkedIn GitHub