I am converting a B4PPC module to B4A. I use a single "Form" and many, many Panels all of which are created in the "App_Start" Routine. What the user looks at depends on button clicks and the view is controled by:
Although I have been using B4PPC for 10 years, this is my first foray into B4A. Considering the Android "life_cycle" I believe it would be much more efficient to break the massive "form build" cycle into individual routines (Panel with buttons, Panel with text input, etc). Where I would make the panel visible, instead create the Panel at that point and place it on the view. Where I would make it invisible, simply remove it.
Then it would not matter about initialization because all "Forms/Views" are created on demand. I should also point out that on any given day, the majority of panels would never be looked at. Is this approach better than creating all panels at app start or is their some price-to-pay in Android for re-creating views.
You can go with the on-the-fly creation of Panels.
You can even consider to prepare a few layouts for those panels that should coexist and LoadLayout them.
Another good option could be the expandable CLV (look for xCustomListView) where you add your panel to a scrooling view capable of expand each panel at will.
I'd say that the final choice will depend on your real needs.
Thank you for your reply. I wrote a program to read an existing B4PPC source file and convert the B4P IDE generated code into B4A, which worked fine. When I tried to test it, the compiler crashed. I have attached the program and the error. I obviously need to use individual routines instead of inline code but I can`t find a solution. In B4PPC, I used the following in every program, simply changing the Menu Array:
B4X:
tp = 130
mx = ArrayLen(menu()) - 1
For i = 0 To mx
bttx = menu(i)
btln = SR.Len(bttx) * 14
btlf = Int((fwid - btln) / 2)
bt = "bPS1AM" & i+1
AddButton("fMUPS1AM",bt,btlf,tp,btln,fbut,SR.Strip(bttx) & " ")
AddEvent(bt,Click,"Button_Handler")
Control(bt,Button).FontColor = cWhite
Control(bt,Button).FontSize = 14
If i = mx Then Control(bt,Button).Color = cRed Else Control(bt,Button).Color = cBlue
tp = tp + fbut + fgap
Next
Use of the "Control" function allowed you to use strings for view objects, but I can find no equivalent in B4A.
I have looked at the TicTacToe example but the buttons have no names. Think of modifying the program for the computer to play against you. How would the computer put an X in the center button? I need to be able to hide/show buttons and/or change the Text depending on the status of my program.
Any further assistance would be greatly appreciated
.