B4J Question Remove Listener crashes

Patent

Member
Licensed User
Longtime User
Dear Guys,

trying some things with Listeners.
Does anyone know why the removeListener Sub crashes the app?
The Listener is added and works well.
(I know, that it is easier implemented in B4J!) :D

Thanks



Error occurred on line: 40 (Main) (which is the wrong line?)

java.lang.reflect.InvocationTargetException
.
.



B4X:
#Region Project Attributes
    #MainFormWidth: 600
    #MainFormHeight: 600
#End Region

Sub Process_Globals
    Private fx As JFX
    Private MainForm As Form

    Dim joSlider As JavaObject
    Dim S As Slider
    Dim joPropertyValue As JavaObject
    Dim objChangeListener As Object
End Sub

Sub AppStart (Form1 As Form, Args() As String)
    MainForm = Form1
    MainForm.Show
    run
End Sub

Sub run
    S.Initialize("")
    MainForm.rootpane.AddNode(S,10Dip,16Dip,20Dip,50Dip)
    sliderchangelistener
    ' do some nice things
    removelistener
End Sub


Sub sliderchangelistener
        joSlider=S   
        joPropertyValue=joSlider.RunMethod("valueProperty",Null)
        objChangeListener=joPropertyValue.CreateEvent("javafx.beans.value.ChangeListener","changelistenerEQ","")
        joPropertyValue.RunMethod("addListener",Array(objChangeListener))
End Sub

Sub changelistenerEQ_Event(MethodName As String,Args() As Object) As Object
        Log(S.Value)
End Sub

Sub removelistener
        joPropertyValue.RunMethod("removeListener",Array(objChangeListener))
End Sub
 

stevel05

Expert
Licensed User
Longtime User
The error you are getting is because you are passing a string as the defaultreturnvalue when it needs a Boolean

Change it to :

B4X:
objChangeListener=joPropertyValue.CreateEvent("javafx.beans.value.ChangeListener","changelistenerEQ",False)
 
Upvote 0

Patent

Member
Licensed User
Longtime User
interesting, that it does no matter if the listener is removed or not.
it works after removing as well!
(not to show with the example in post 1. there is a main loop missing, as well)
 
Upvote 0
Top