Jump to content
View in the app

A better way to browse. Learn more.

Tinkerunity

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

Geschrieben

Hallo zusammen,

bin gerade durch Zufall drauf gekommen. Gibt es eine Möglichkeit einen Listener wieder zu entfernen?

Hab ich gerade ein Brett vorm Kopf oder geht das bisher nicht?

 

 

Geschrieben

Also in der C#-Implementierung kann bisher pro Callback nur ein Empfänger eingetragen sein. Ich vermute du nutzt Java, wenn es dort auch so ist, dann würde es reichen einfach einen leeren Empfänger auf den Callback zu registrieren, dieser würde den alten dann verdrängen.

Geschrieben
  • Autor

Ok, dann nutze ich beim nächsten Mal erst den workaround.

Sind halt Kleinigkeiten, die erst bei weitergehenden Tests auffallen :)

  • 3 years later...
Geschrieben

Hallo,

 

ich möchte diesen Thread nochmal auffrischen mit einer ergänzenden Frage:

 

DIe Frage bezieht sich auf Java.

 

Ich möchte einen Listener wieder entfernen (in meinem Fall einen stateChangedListener vom DualButton-Bricklet). Die Methode button.removeStateChangedListener() erwartet einen Übergabeparameter, nämlich den zu entfernenden Listener. Diesen habe ich angelegt wie im Beispielquelltext hier von TF. Ich habe aber in diesem Beispiel keine Referenz auf diesen Listener. Wie gestalte ich es am simpelsten, dass ich eine Referenz bekomme?

Vielleicht könnte jemand einen kurzen Beispielquelltext geben, der dies verdeutlicht. Ich stehe gerade nämlich ziemlich auf dem Schlauch... Google hat mich hier nicht wirklich weiter gebracht. Ich will den Listener nämlich nicht (z.B. per boolean-Variable) deaktivieren, sondern wirklich entfernen.

 

Das wäre sehr hilfreich. Vielen Dank schon im Vorraus.

 

Geschrieben

Ich habe mich nochmal in Ruhe drangesetzt. Falls nochmal jemand die gleiche Frage haben sollte wie ich, poste ich mal die Lösung.

 

Kompiliert einwandfrei.

Trotzdem frage ich mich: Machen die anderen das auch so? Gibt es einen besseren Weg? Würde mich über Verbesserungsvorschläge freuen. Mein Quelltext sieht im Moment so aus:

 

            // Add and implement state changed listener
            BrickletDualButton.StateChangedListener bscl = new BrickletDualButton.StateChangedListener() {
                public void stateChanged(short buttonL, short buttonR, short ledL, short ledR) {
                    if(buttonL == BrickletDualButton.BUTTON_STATE_PRESSED) {
                        //TUE WAS
                    } 
                    if(buttonR == BrickletDualButton.BUTTON_STATE_PRESSED) {
                        // TUE WAS
                    }
                }
            };
            tf.button.addStateChangedListener(bscl);
            //TUE WAS
            tf.button.removeStateChangedListener(bscl)

Geschrieben

Hallo FabianB,

 

also ich hätte es auch so gemacht  ;)

Alternative wäre eine eigene Klasse, die von "StateChangedListener" erbt, diese dann instaziieren und einer Variablen zuweisen. Wenn du in "stateChanged" aber nicht viel machst, halte ich das für Overkill.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.