So the following code runs through a database and builds buttons onto Panel1. The buttons are DIMmed in the loop and initialized to point to sub btnNearby when clicked - and they do so just fine.
However, in the btnNearby_Click, I dim a button "b" and set it to sender. The log explodes and tells me I need to initialize b.
The error text is:
** Activity (main) Create, isFirst = true **
** Activity (main) Resume **
main_btnnearby_click (B4A line: 96)
Dim KeyValue As String=b.Tag
java.lang.RuntimeException: Object should first be initialized (Button).
at anywheresoftware.b4a.AbsObjectWrapper.getObject(AbsObjectWrapper.java:46)
at anywheresoftware.b4a.objects.ViewWrapper.getTag(ViewWrapper.java:205)
at com.dtsemt_hereiam.main._btnnearby_click(main.java:449)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at anywheresoftware.b4a.BA.raiseEvent2(BA.java:169)
at anywheresoftware.b4a.BA.raiseEvent2(BA.java:157)
at anywheresoftware.b4a.BA.raiseEvent(BA.java:153)
at anywheresoftware.b4a.objects.ViewWrapper$1.onClick(ViewWrapper.java:63)
at android.view.View.performClick(View.java:4203)
at android.view.View$PerformClick.run(View.java:17189)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4950)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1004)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:771)
at dalvik.system.NativeStart.main(Native Method)
java.lang.RuntimeException: Object should first be initialized (Button).
I've tried initializing, but it seems to be un-initialized after Sender is assigned.
So, what am I doing wrong here? I've looked so long my eyes are crossed... :-/
However, in the btnNearby_Click, I dim a button "b" and set it to sender. The log explodes and tells me I need to initialize b.
B4X:
Sub Something
Dim WildLat As String=TmpLat
WildLat=WildLat.SubString2(0,WildLat.Length-2)
'
Dim WildLong As String=TmpLong
WildLong=WildLong.SubString2(0,WildLong.Length-2)
'
Dim AllPlaces As List = Places.ListKeys
Dim Halves(), MatchLat, MatchLong As String
Dim ButtonTop As Int = btnadd.Top+btnadd.Height+3dip
Dim ButtonHeight As Int=50dip
For i = 0 To AllPlaces.Size-1
Halves=Regex.Split(":",AllPlaces.Get(i))
MatchLat=Halves(0).substring2(0,WildLat.Length)
MatchLong=Halves(1).SubString2(0,WildLong.Length)
If MatchLat=WildLat AND MatchLong=WildLong Then
Dim newbtn As Button
newbtn.Initialize("btnNearby")
newbtn.Tag=AllPlaces.Get(i)
HereIAm=Places.GetObject(newbtn.Tag)
newbtn.Text=HereIAm.PlaceName
Panel1.AddView(newbtn,5dip,ButtonTop,100%x-10dip,ButtonHeight)
ButtonTop=ButtonTop+ButtonHeight+5dip
End If
Next
End Sub
'
Sub btnNearby_Click
Dim b As Button
b=Sender
Dim KeyValue As String=b.Tag
HereIAm=Places.GetObject(KeyValue)
edtLocation.Text=HereIAm.PlaceName
edtNote.Text=HereIAm.Notes
Toggle(Panel2)
End Sub
The error text is:
** Activity (main) Create, isFirst = true **
** Activity (main) Resume **
main_btnnearby_click (B4A line: 96)
Dim KeyValue As String=b.Tag
java.lang.RuntimeException: Object should first be initialized (Button).
at anywheresoftware.b4a.AbsObjectWrapper.getObject(AbsObjectWrapper.java:46)
at anywheresoftware.b4a.objects.ViewWrapper.getTag(ViewWrapper.java:205)
at com.dtsemt_hereiam.main._btnnearby_click(main.java:449)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at anywheresoftware.b4a.BA.raiseEvent2(BA.java:169)
at anywheresoftware.b4a.BA.raiseEvent2(BA.java:157)
at anywheresoftware.b4a.BA.raiseEvent(BA.java:153)
at anywheresoftware.b4a.objects.ViewWrapper$1.onClick(ViewWrapper.java:63)
at android.view.View.performClick(View.java:4203)
at android.view.View$PerformClick.run(View.java:17189)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4950)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1004)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:771)
at dalvik.system.NativeStart.main(Native Method)
java.lang.RuntimeException: Object should first be initialized (Button).
I've tried initializing, but it seems to be un-initialized after Sender is assigned.
So, what am I doing wrong here? I've looked so long my eyes are crossed... :-/