Kotlin und Singleton-Objekt

  • Antworten:3
  • OffenNicht stickyBentwortet
  • Forum-Beiträge: 308

08.03.2020, 17:42:21 via Website

Hallo zusammen

Ich bin am Kotlin lernen. Dazu habe ich ein Lehrbuch gekauft. Da hat es einige kleine Beispiele darin. Mein Programm soll ein Ereignis auslösen wenn ich den Button anklicke. Dies funktioniert bis auf den Button bufuenf. Da wird das onClick Ereignis mittels eines Singleton-Objekt ausgelöst.

val mFuenf = object: View.OnClickListener{
        override fun onClick(v: View?) {
            tvAusgabe.text = "Zahl 5"
        }

    }
    bufuenf.setOnClickListener { mFuenf }

Ich denke, dass ich das Beispiel wie im Buch beschrieben abgetippt habe. Trotzdem funktioniert es nicht. Kann mir jemand sagen was ich falsch mache.
zum Schluss noch die ganze Klasse

package ch.robbisoft.listenervarianten

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.Button
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity(), View.OnClickListener {

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    buEins.setOnClickListener(this)
    buZwei.setOnClickListener(this)

    val mDrei = MeineListenerKlasse()
    buDrei.setOnClickListener(mDrei)

    buVier.setOnClickListener { MeinListenerObjekt }

    val mFuenf = object: View.OnClickListener{
        override fun onClick(v: View?) {
            tvAusgabe.text = "Zahl 5"
        }

    }
    bufuenf.setOnClickListener { mFuenf }

    buSechs.setOnClickListener(object:View.OnClickListener{
        override fun onClick(p0: View?) {
            tvAusgabe.text = "Zahl 6"
        }

    })

    buSieben.setOnClickListener { v ->
        val bu = v as Button
        bu.text = "Hallo sieben"
    }

    buAcht.setOnClickListener { _ ->
        tvAusgabe.text = "Die Zahl 8"
    }

    buNeun.setOnClickListener {
        val bu = it as Button
        bu.text = "Hallo neun"
    }

    buZehn.setOnClickListener {
        tvAusgabe.text = "Zahl 10"
    }
}

override fun onClick(v: View?){
    when(v?.id){
        buEins.id -> tvAusgabe.text = "1"
        buZwei.id -> tvAusgabe.text = "2"
    }
}

}

Gruss Renato

Diskutiere mit!
Beste Antwort
Ludy
  • Mod
  • Blogger
  • Forum-Beiträge: 7.800

08.03.2020, 19:29:27 via Website

Hallo,

bitte aus den geschweiften Klammern {} runde Klammern machen ()

{ mFuenf } => ( mFuenf )

— geändert am 08.03.2020, 19:29:54

Gruß Ludy (App Entwickler)

Mein Beitrag hat dir geholfen? Lass doch ein "Danke" da.☺

Download Samsung Firmware Tool

Meine Wunschliste

Telegram News Feed

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 308

08.03.2020, 17:53:49 via Website

Hallo zusammen

BuVier funktioniert auch nicht.

buVier.setOnClickListener { MeinListenerObjekt }

Es handelt sich um ein benanntes Singelten-Objekt. Möglicherweise mache ich bei beiden denselben Fehler.

package ch.robbisoft.listenervarianten

import android.view.View
import android.widget.Button

object MeinListenerObjekt: View.OnClickListener {
override fun onClick(v: View?){
val bu = v as Button
bu.text = "Hallo vier"
}
}

Hilfreich?
Diskutiere mit!
Beste Antwort
Ludy
  • Mod
  • Blogger
  • Forum-Beiträge: 7.800

08.03.2020, 19:29:27 via Website

Hallo,

bitte aus den geschweiften Klammern {} runde Klammern machen ()

{ mFuenf } => ( mFuenf )

— geändert am 08.03.2020, 19:29:54

Gruß Ludy (App Entwickler)

Mein Beitrag hat dir geholfen? Lass doch ein "Danke" da.☺

Download Samsung Firmware Tool

Meine Wunschliste

Telegram News Feed

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 308

09.03.2020, 18:12:28 via Website

Ciao Ludy

Genau richtig. Runde Klammern am richtigen Ort und es funktioniert.
Danke für die schnelle Hilfe.

Gruss Renato

Hilfreich?
Diskutiere mit!
Empfohlene Artikel bei NextPit