B4A Library Nice Spinner

It wraps this Github project. It requires android-support-v4.jar (a recent version) to be in your additional library folder. You can download it from here. Posting the B4A project, the B4A library files, and the Java code. If you want to make changes to the Java code and recompile it you must add android-support-v4.jar to the libs folder (libs folder is on the folder level as the src folder - see folder structure once you have extracted the zipped file).

The spinner has a nice animated arrow when the spinner opens/closes. You can set amongst others the following:

1. The background color of the selected text
2. The text color of the selected text
3. The background color of the dropdown list
4. The text color of the text in the dropdown list
5. The divider height (between entries) in the dropdown list
6. The color of the divider between entries in the dropdown list (specify 3 different colors or 3 colors of the same color)

Upon selection an event is raised in the B4A project where you can the extract the index of the selected item (first item in a list = index(0)).

1.gif


1.png


2.png


3.png


Some sample code:

B4X:
#Region  Project Attributes
    #ApplicationLabel: NiceSpinner
    #VersionCode: 1
    #VersionName:
    'SupportedOrientations possible values: unspecified, landscape or portrait.
    #SupportedOrientations: unspecified
    #CanInstallToExternalStorage: False

#End Region

#Region  Activity Attributes
    #FullScreen: False
    #IncludeTitle: True
#End Region

Sub Process_Globals
    'These global variables will be declared once when the application starts.
    'These variables can be accessed from all modules.

End Sub

Sub Globals
    'These global variables will be redeclared each time the activity is created.
    'These variables can only be accessed from this module.

    Private ns1, ns2 As NiceSpinner
End Sub

Sub Activity_Create(FirstTime As Boolean)
    'Do not forget to load the layout file created with the visual designer. For example:
    Activity.LoadLayout("main")
    ns1.Initialize("ns1")
    ns2.Initialize("ns2")

    Activity.AddView(ns1, 20%x, 5%y, 20%x, 10%y)
    Activity.AddView(ns2, 60%x, 5%y, 20%x, 10%y)
 
    Dim r1 As List
    r1.Initialize
    r1.AddAll(Array As String("One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve"))
    Dim divcolor() As Int = Array As Int(Colors.Blue, Colors.Green, Colors.Red)
    ns1.DividerColor = divcolor
    ns1.DividerHeight = 1
    ns1.DropdownListBackgroundColor = Colors.LightGray
    ns1.attachDataSource(r1)
    ns1.DropdownListTextColor = Colors.DarkGray
    'the next two lines of code must be before ns1.SelectedIndex is set
    ns1.SelectedTextColor = Colors.Green
    ns1.SelectedTextBackgroundColor = Colors.White
    'always set this even if just to 0
    ns1.SelectedIndex = 0


    Dim r2 As List
    r2.Initialize   
    r2.AddAll(Array As String("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"))         
    Dim divcolor() As Int = Array As Int(Colors.White, Colors.White, Colors.White)
    ns2.DividerColor = divcolor
    ns2.DividerHeight = 2
    ns2.DropdownListBackgroundColor = Colors.Black
    ns2.attachDataSource(r2)
    ns2.DropdownListTextColor = Colors.White
    'the next two lines of code must be before ns2.SelectedIndex is set
    ns2.SelectedTextColor = Colors.White
    ns2.SelectedTextBackgroundColor = Colors.DarkGray
    'always set this even if just to 0
    ns2.SelectedIndex = 2

End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

Sub ns1_item_clicked

    Log("ns1 item " & ns1.SelectedIndex &" selected")

End Sub

Sub ns2_item_clicked

    Log("ns2 item " & ns2.SelectedIndex &" selected")

End Sub

NiceSpinner
Author:
Johan Schoeman
Version: 1
  • NiceSpinner
    Fields:
    • ba As BA
    Methods:
    • BringToFront
    • DesignerCreateView (base As PanelWrapper, lw As LabelWrapper, props As Map)
    • Initialize (EventName As String)
    • Invalidate
    • Invalidate2 (arg0 As Rect)
    • Invalidate3 (arg0 As Int, arg1 As Int, arg2 As Int, arg3 As Int)
    • IsInitialized As Boolean
    • RemoveView
    • RequestFocus As Boolean
    • SendToBack
    • SetBackgroundImage (arg0 As Bitmap)
    • SetColorAnimated (arg0 As Int, arg1 As Int, arg2 As Int)
    • SetLayout (arg0 As Int, arg1 As Int, arg2 As Int, arg3 As Int)
    • SetLayoutAnimated (arg0 As Int, arg1 As Int, arg2 As Int, arg3 As Int, arg4 As Int)
    • SetTextColorAnimated (arg0 As Int, arg1 As Int)
    • SetTextSizeAnimated (arg0 As Int, arg1 As Float)
    • SetVisibleAnimated (arg0 As Int, arg1 As Boolean)
    • attachDataSource (dataset As List)
    • dismissDropDown
    • showDropDown
    Properties:
    • Background As Drawable
    • Color As Int [write only]
    • DividerColor() As Int [write only]
    • DividerHeight As Int [write only]
    • DropdownListBackgroundColor As Int [write only]
    • DropdownListTextColor As Int [write only]
    • Enabled As Boolean
    • Gravity As Int
    • Height As Int
    • Left As Int
    • SelectedIndex As Int
      Get or Set the default spinner item using its index
    • SelectedTextBackgroundColor As Int [write only]
    • SelectedTextColor As Int [write only]
    • Tag As Object
    • Text As String
    • TextColor As Int
    • TextSize As Float
    • Top As Int
    • Typeface As Typeface
    • Visible As Boolean
    • Width As Int
 

Attachments

  • TheJavaCode.zip
    54.8 KB · Views: 570
  • ba4NiceSpinner.zip
    31.3 KB · Views: 949
  • b4aNiceSpinnerLibFiles.zip
    16.5 KB · Views: 972
Last edited:

Johan Schoeman

Expert
Licensed User
Very nice Library, very useful.
Just one question.
I did not find any difference using "disabled True or False".
My application needs to block the ComboBox under some circumstances avoiding to change the first item selected.
I used disbled = False and did not work as I needed.
Any help would be welcome.

Thanks in advance.
JRuiz
Try with the attached library files (V2.01)

B4X:
ns1.SpinnerEnabled = False            'or ns1.SpinnerEnabled = True
 

Attachments

  • NiceSpinner_V2_01.zip
    16.7 KB · Views: 162

jruiz1998

Member
Licensed User
Johan,

I have one more question.
I have several fields to populate and I am using the IME Keyboard.
When I tap the spinner, it displays the menu behind the keyboard and I have to hide the keyboard manually.
Is it possible to hide it automatically when I tap the Label of the ns?. May be something like "ns_item_clicked", but before selecting the item.

Thanks in advance
JRuiz
 

Johan Schoeman

Expert
Licensed User
Johan,

I have one more question.
I have several fields to populate and I am using the IME Keyboard.
When I tap the spinner, it displays the menu behind the keyboard and I have to hide the keyboard manually.
Is it possible to hide it automatically when I tap the Label of the ns?. May be something like "ns_item_clicked", but before selecting the item.

Thanks in advance
JRuiz
Try the attached library files (V2.02) and then add this to your B4A code:
B4X:
Sub ns1_spinner_touched
  
    Log("ns1 Spinner Touched")
  
End Sub

See if will help you to sort out the problem. The event will be raised as soon as what you touch the spinner but before the drop-down occurs.
 

Attachments

  • NiceSpinnerLifFiles_V2_02.zip
    16.8 KB · Views: 153
Last edited:

Dave O

Well-Known Member
Licensed User
I'm trying this spinner because it has a public Typeface property, and I want to use it to pick icons using the new Material Icons and FontAwesome fonts.

While the iconified text appears properly in the closed dropdown, the list in the open dropdown does not render (showing just the placeholder symbol).

It seems that the list items are not respecting the Typeface property. Any chance of fixing this?

Thanks!
 

Johan Schoeman

Expert
Licensed User
I'm trying this spinner because it has a public Typeface property, and I want to use it to pick icons using the new Material Icons and FontAwesome fonts.

While the iconified text appears properly in the closed dropdown, the list in the open dropdown does not render (showing just the placeholder symbol).

It seems that the list items are not respecting the Typeface property. Any chance of fixing this?

Thanks!
Dave, I will revisit it sometime during this week - has been more than a year since I have wrapped it.
 

Johan Schoeman

Expert
Licensed User
It seems that the list items are not respecting the Typeface property. Any chance of fixing this?

Thanks!

Dave, try the attached B4A project and new library files (note the invisible label added in the designer):

B4X:
    Dim r1 As List
    r1.Initialize
    r1.AddAll(Array As String("One" & Chr(9) & Chr(9) & Chr(0xF179), "Two"  & Chr(9) & Chr(9) & Chr(0xF17B), "Three" &  Chr(9) & Chr(9) & Chr(0xF17A), "Four" & Chr(9) & Chr(9) & Chr(0xF061), "Five"  & Chr(9) & Chr(9) & Chr(0xF179)))
    Dim divcolor() As Int = Array As Int(Colors.Blue, Colors.Green, Colors.Red)
    ns1.DividerColor = divcolor
    ns1.DividerHeight = 1
    ns1.DropdownListBackgroundColor = Colors.Green
    ns1.attachDataSource(r1)
   
    'do this after ns1.attachDataSource(r1)
    ns1.DropdownListTypeface = l1.Typeface
    ns1.Typeface = l1.typeface
   
    ns1.DropdownListTextColor = Colors.Magenta
    'the next two lines of code must be before ns1.SelectedIndex is set
    ns1.SelectedTextColor = Colors.Blue
    ns1.SelectedTextBackgroundColor = Colors.White   
    'always set this even if just to 0
    ns1.SelectedIndex = 0
    ns1.SpinnerEnabled = True

4.png
 

Attachments

  • NiceSpinnerLibFiles.zip
    17 KB · Views: 139
  • ba4NiceSpinner.zip
    32.2 KB · Views: 146

Dave O

Well-Known Member
Licensed User
Hi Johan, thanks for posting this update so quickly.

I can confirm that when using code to set the properties, the typefaces now work correctly. Thanks.

However, if I add the spinner using the Designer, some of the new properties are not available.

Also (and more importantly), if I set properties like Typeface and Size in the Designer, these are ignored when the app is run. Is that something you can reproduce, or perhaps a problem at my end?

Thanks again!
 

Johan Schoeman

Expert
Licensed User
Hi Johan,

How can we clear the items in the dropdown?
Without having to change the library you can perhaps do it with the following code:
B4X:
#Region  Project Attributes
    #ApplicationLabel: NiceSpinner
    #VersionCode: 1
    #VersionName:
    'SupportedOrientations possible values: unspecified, landscape or portrait.
    #SupportedOrientations: landscape
    #CanInstallToExternalStorage: False

#End Region

#Region  Activity Attributes
    #FullScreen: False
    #IncludeTitle: True
#End Region

Sub Process_Globals
    'These global variables will be declared once when the application starts.
    'These variables can be accessed from all modules.

End Sub

Sub Globals
    'These global variables will be redeclared each time the activity is created.
    'These variables can only be accessed from this module.

    Private ns1, ns2 As NiceSpinner
    Private b1, b2 As Button
    Dim r1 As List
End Sub

Sub Activity_Create(FirstTime As Boolean)
    'Do not forget to load the layout file created with the visual designer. For example:
    Activity.LoadLayout("main")
    ns1.Initialize("ns1")
    ns2.Initialize("ns2")
    b1.Initialize("b1")
    b1.Color = Colors.Blue
    b1.Text = "Clear ns1"
    b1.TextColor = Colors.white
   
    b2.Initialize("b2")
    b2.Color = Colors.Blue
    b2.Text = "Change ns1"
    b2.TextColor = Colors.white
   
    Activity.AddView(ns1, 20%x, 5%y, 20%x, 15%y)
    Activity.AddView(ns2, 60%x, 5%y, 20%x, 15%y)
    Activity.AddView(b1, 5%x, 80%y, 30%x, 20%y)
    Activity.AddView(b2, 40%x, 80%y, 30%x, 20%y)
       

    r1.Initialize
    r1.AddAll(Array As String("One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve"))
    Dim divcolor() As Int = Array As Int(Colors.Blue, Colors.Green, Colors.Red)
    ns1.DividerColor = divcolor
    ns1.DividerHeight = 1
    ns1.DropdownListBackgroundColor = Colors.Green
    ns1.attachDataSource(r1)
    ns1.DropdownListTextColor = Colors.DarkGray   
    'the next two lines of code must be before ns1.SelectedIndex is set
    ns1.SelectedTextColor = Colors.Cyan
    ns1.SelectedTextBackgroundColor = Colors.White   
    'always set this even if just to 0
    ns1.SelectedIndex = 0
    ns1.SpinnerEnabled = True
   


    Dim r2 As List
    r2.Initialize         
    r2.AddAll(Array As String("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"))               
    Dim divcolor() As Int = Array As Int(Colors.White, Colors.White, Colors.White)
    ns2.DividerColor = divcolor
    ns2.DividerHeight = 3
    ns2.DropdownListBackgroundColor = Colors.Black
    ns2.attachDataSource(r2)
    ns2.DropdownListTextColor = Colors.White
    'the next two lines of code must be before ns2.SelectedIndex is set   
    ns2.SelectedTextColor = Colors.White
    ns2.SelectedTextBackgroundColor = Colors.DarkGray   
    'always set this even if just to 0
    ns2.SelectedIndex = 2

End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

Sub ns1_item_clicked
   
    Log("ns1 item " & ns1.SelectedIndex &" selected")
   
End Sub

Sub ns1_spinner_touched
   
    Log("ns1 Spinner Touched")
   
End Sub

Sub ns2_item_clicked
   
    Log("ns2 item " & ns2.SelectedIndex &" selected")
   
End Sub

Sub ns2_spinner_touched
   
    Log("ns2 Spinner Touched")
   
End Sub

Sub b1_click


    ns1.RemoveView
   
    ns1.Initialize("ns1")
    Activity.AddView(ns1, 20%x, 5%y, 20%x, 15%y)

    r1.Initialize
    r1.AddAll(Array As String(""))
    Dim divcolor() As Int = Array As Int(Colors.Blue, Colors.Green, Colors.Red)
    ns1.DividerColor = divcolor
    ns1.DividerHeight = 1
    ns1.DropdownListBackgroundColor = Colors.Green
    ns1.attachDataSource(r1)
    ns1.DropdownListTextColor = Colors.DarkGray
    'the next two lines of code must be before ns1.SelectedIndex is set
    ns1.SelectedTextColor = Colors.Cyan
    ns1.SelectedTextBackgroundColor = Colors.White
    'always set this even if just to 0
    ns1.SelectedIndex = 0
    ns1.SpinnerEnabled = True
     
   
End Sub


Sub b2_click
   
    ns1.RemoveView
   
    ns1.Initialize("ns1")
    Activity.AddView(ns1, 20%x, 5%y, 20%x, 15%y)

    r1.Initialize
    r1.AddAll(Array As String("A", "1", "B", "2", "C", "3", "D", "4", "E", "5"))
    Dim divcolor() As Int = Array As Int(Colors.Blue, Colors.Green, Colors.Red)
    ns1.DividerColor = divcolor
    ns1.DividerHeight = 1
    ns1.DropdownListBackgroundColor = Colors.Green
    ns1.attachDataSource(r1)
    ns1.DropdownListTextColor = Colors.DarkGray
    'the next two lines of code must be before ns1.SelectedIndex is set
    ns1.SelectedTextColor = Colors.Cyan
    ns1.SelectedTextBackgroundColor = Colors.White
    'always set this even if just to 0
    ns1.SelectedIndex = 0
    ns1.SpinnerEnabled = True
     
   
End Sub

Try it and see if it works for you

clear.png
 

ErickAsas

Member
Licensed User
Hi Johan,

Thanks for the reply. I found out that if I manipulate the list attached to the control datasource(attachDataSource) and re-attach it to the control, the list items are changed.

So thanks. No need to remove the view.

Erick
 

Johan Schoeman

Expert
Licensed User
Hi Johan,
is there a way to change the textsize of the dropdownlist items?
See the attached B4A project and new library files (V2.03)

Use it as follows:
B4X:
ns2.DropdownListTextSize = 10
ns2.SelectedItemTextSize = 15

pic1.png


pic2.png


Sample code:

B4X:
#Region  Project Attributes
    #ApplicationLabel: NiceSpinner
    #VersionCode: 1
    #VersionName:
    'SupportedOrientations possible values: unspecified, landscape or portrait.
    #SupportedOrientations: landscape
    #CanInstallToExternalStorage: False

#End Region

#Region  Activity Attributes
    #FullScreen: False
    #IncludeTitle: True
#End Region

Sub Process_Globals
    'These global variables will be declared once when the application starts.
    'These variables can be accessed from all modules.

End Sub

Sub Globals
    'These global variables will be redeclared each time the activity is created.
    'These variables can only be accessed from this module.

    Private ns1, ns2 As NiceSpinner
    Private l1 As Label

End Sub

Sub Activity_Create(FirstTime As Boolean)
    'Do not forget to load the layout file created with the visual designer. For example:
    Activity.LoadLayout("main")
'    ns1.Initialize("ns1")
'    ns2.Initialize("ns2")
   
'    Activity.AddView(ns1, 20%x, 5%y, 20%x, 15%y)
'    Activity.AddView(ns2, 60%x, 5%y, 20%x, 15%y)
       
    Dim r1 As List
    r1.Initialize
    r1.AddAll(Array As String("One" & Chr(9) & Chr(9) & Chr(0xF179), "Two"  & Chr(9) & Chr(9) & Chr(0xF17B), "Three" &  Chr(9) & Chr(9) & Chr(0xF17A), "Four" & Chr(9) & Chr(9) & Chr(0xF061), "Five"  & Chr(9) & Chr(9) & Chr(0xF179)))
    Dim divcolor() As Int = Array As Int(Colors.Blue, Colors.Green, Colors.Red)
    ns1.DividerColor = divcolor
    ns1.DividerHeight = 1
    ns1.DropdownListBackgroundColor = Colors.Green
    ns1.attachDataSource(r1)
   
    'do this after ns1.attachDataSource(r1)
    ns1.DropdownListTypeface = l1.Typeface
    ns1.Typeface = l1.typeface
   
    ns1.DropdownListTextColor = Colors.Magenta
    'the next two lines of code must be before ns1.SelectedIndex is set
    ns1.SelectedTextColor = Colors.Blue
    ns1.SelectedTextBackgroundColor = Colors.White   
    'always set this even if just to 0
    ns1.SelectedIndex = 0
    ns1.SpinnerEnabled = True



    Dim r2 As List
    r2.Initialize         
    r2.AddAll(Array As String("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"))               
    Dim divcolor() As Int = Array As Int(Colors.White, Colors.White, Colors.White)
    ns2.DividerColor = divcolor
    ns2.DividerHeight = 3
    ns2.DropdownListBackgroundColor = Colors.Black
    ns2.attachDataSource(r2)
    ns2.DropdownListTextColor = Colors.White
    ns2.DropdownListTextSize = 10
    ns2.SelectedItemTextSize = 15
    'the next two lines of code must be before ns2.SelectedIndex is set   
    ns2.SelectedTextColor = Colors.White
    ns2.SelectedTextBackgroundColor = Colors.DarkGray   
    'always set this even if just to 0
    ns2.SelectedIndex = 2

End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

Sub ns1_item_clicked
   
    Log("ns1 item " & ns1.SelectedIndex &" selected")
   
End Sub

Sub ns1_spinner_touched
   
    Log("ns1 Spinner Touched")
   
End Sub

Sub ns2_item_clicked
   
    Log("ns2 item " & ns2.SelectedIndex &" selected")
   
End Sub

Sub ns2_spinner_touched
   
    Log("ns2 Spinner Touched")
   
End Sub
 

Attachments

  • NiceSpinnerLibFilesV2.03.zip
    17.2 KB · Views: 222
  • b4aNiceSpinner25022017.zip
    32.3 KB · Views: 203

bigbadfred

Member
Licensed User
Wow!
Thanks a lot, Johan, for your thorough reply.
I will try this out tonight and will let you know how it went.
Thanks again, I can make good use of this.
 

Lakhtin_V

Member
Licensed User
Hi! not working with Lib Ver1 and Lib Ver2

when I use it I get bellow exception:
android.content.res.Resources$NotFoundException: Resource ID #0x0

Xiome Note 3 Pro , Android 6.0.1
 

Johan Schoeman

Expert
Licensed User
Hi! not working with Lib Ver1 and Lib Ver2

when I use it I get bellow exception:
android.content.res.Resources$NotFoundException: Resource ID #0x0

Xiome Note 3 Pro , Android 6.0.1
See post #18
 

taylorw

Active Member
Licensed User
Hi all, i have follow the step to downloaad "android-support-v4.jar" and paste in B4A library folder.
Below is my error.

B4X:
Error occurred on line: 42 (frmItem_Maintenance)
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
    at anywheresoftware.b4a.keywords.LayoutBuilder.loadLayout(LayoutBuilder.java:166)
    at anywheresoftware.b4a.objects.PanelWrapper.LoadLayout(PanelWrapper.java:134)
    at java.lang.reflect.Method.invoke(Native Method)
    at anywheresoftware.b4a.shell.Shell.runMethod(Shell.java:710)
    at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:342)
    at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:249)
    at java.lang.reflect.Method.invoke(Native Method)
    at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:139)
    at b4a.example.frmitem_maintenance.afterFirstLayout(frmitem_maintenance.java:102)
    at b4a.example.frmitem_maintenance.access$000(frmitem_maintenance.java:17)
    at b4a.example.frmitem_maintenance$WaitForLayout.run(frmitem_maintenance.java:80)
    at android.os.Handler.handleCallback(Handler.java:743)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:150)
    at android.app.ActivityThread.main(ActivityThread.java:5621)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:684)
Caused by: java.lang.reflect.InvocationTargetException
    at java.lang.reflect.Method.invoke(Native Method)
    at anywheresoftware.b4a.objects.CustomViewWrapper.AfterDesignerScript(CustomViewWrapper.java:64)
    at anywheresoftware.b4a.keywords.LayoutBuilder.loadLayout(LayoutBuilder.java:158)
    ... 17 more
Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x0
    at android.content.res.Resources.getValue(Resources.java:1384)
    at android.content.res.Resources.getDimensionPixelSize(Resources.java:725)
    at main.java.org.angmarch.views.NiceSpinner.init(NiceSpinner.java:127)
    at main.java.org.angmarch.views.NiceSpinner.<init>(NiceSpinner.java:72)
    at nicespinnerwrapper.niceSpinnerWrapper._initialize(niceSpinnerWrapper.java:105)
    ... 20 more
** Activity (frmitem_maintenance) Resume **
 

Johan Schoeman

Expert
Licensed User
Hi all, i have follow the step to downloaad "android-support-v4.jar" and paste in B4A library folder.
Below is my error.

B4X:
Error occurred on line: 42 (frmItem_Maintenance)
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
    at anywheresoftware.b4a.keywords.LayoutBuilder.loadLayout(LayoutBuilder.java:166)
    at anywheresoftware.b4a.objects.PanelWrapper.LoadLayout(PanelWrapper.java:134)
    at java.lang.reflect.Method.invoke(Native Method)
    at anywheresoftware.b4a.shell.Shell.runMethod(Shell.java:710)
    at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:342)
    at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:249)
    at java.lang.reflect.Method.invoke(Native Method)
    at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:139)
    at b4a.example.frmitem_maintenance.afterFirstLayout(frmitem_maintenance.java:102)
    at b4a.example.frmitem_maintenance.access$000(frmitem_maintenance.java:17)
    at b4a.example.frmitem_maintenance$WaitForLayout.run(frmitem_maintenance.java:80)
    at android.os.Handler.handleCallback(Handler.java:743)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:150)
    at android.app.ActivityThread.main(ActivityThread.java:5621)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:684)
Caused by: java.lang.reflect.InvocationTargetException
    at java.lang.reflect.Method.invoke(Native Method)
    at anywheresoftware.b4a.objects.CustomViewWrapper.AfterDesignerScript(CustomViewWrapper.java:64)
    at anywheresoftware.b4a.keywords.LayoutBuilder.loadLayout(LayoutBuilder.java:158)
    ... 17 more
Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x0
    at android.content.res.Resources.getValue(Resources.java:1384)
    at android.content.res.Resources.getDimensionPixelSize(Resources.java:725)
    at main.java.org.angmarch.views.NiceSpinner.init(NiceSpinner.java:127)
    at main.java.org.angmarch.views.NiceSpinner.<init>(NiceSpinner.java:72)
    at nicespinnerwrapper.niceSpinnerWrapper._initialize(niceSpinnerWrapper.java:105)
    ... 20 more
** Activity (frmitem_maintenance) Resume **
See post #18. You are missing the files in the B4A project's /Objects/res/bla bla folders. These files need to set to READ ONLY else they will be deleted the first time that you compile the B4A app.
 
Top