Android Question SpotLight menu

GiovanniPolese

Well-Known Member
Licensed User
Longtime User
Hi. (I repost here same question posted as reply to original SpotLight post)
I am thinking to use this nice feature for displaying some country flags and doing the relative choice.
I just copied the code from Ilan example.
The difference is that I haven't put the button on a panel, but directly on activity. (In my code the "btn" button is named "Lingua").
My code is hereunder, followed by the log with the error. The program, anyway, works.
Any hint? Thanks in advance.

Code: Copy
Sub Globals
Private splight As SpotLight
Private Lingua AsButton
End Sub
Sub Activity_Create(FirstTime As Boolean)
 Activity.LoadLayout("Main")
 'Create Spotlight Menu
 Dim Italia,England,Russia AsBitmap' used always same jpg for the flags, just experiment 
 Italia.Initialize(File.DirAssets,"italia.jpg")
 England.Initialize(File.DirAssets,"italia.jpg")
 Russia.Initialize(File.DirAssets,"italia.jpg")
 
 splight.Initialize(Me,"splight",10%y,False,False,True,Lingua,Activity)
 
 splight.additem("Italia", Colors.Black,18,Italia)
 splight.additem("England",Colors.Black,18,England)
 splight.additem("Russia", Colors.Black,18,Russia)End Sub
Sub Activity_Resume
End Sub
Sub Activity_Pause (UserClosed As Boolean)
End Sub
Sub Lingua_Click
 splight.show
End Sub
LOG:

** Activity (main) Create, isFirst = true **
** Activity (main) Resume **
** Activity (main) Pause, UserClosed = true **
*** Service (starter) Create ***
** Service (starter) Start **
** Activity (main) Create, isFirst = true **
** Activity (main) Resume **
Error occurred on line: 32 (Starter) <<<<<<<<<<<<<<<<<< ???? <<<<<<<<<<<<<
java.lang.NullPointerException: Attempt to read from field 'int android.view.ViewGroup$LayoutParams.width' on a null object reference
at anywheresoftware.b4a.objects.ViewWrapper.getWidth(ViewWrapper.java:140)
at b4a.example.spotlight._show(spotlight.java:509)
at b4a.OpenMuseum.main._lingua_click(main.java:421)
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:339)
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 anywheresoftware.b4a.BA.raiseEvent2(BA.java:170)
at anywheresoftware.b4a.BA.raiseEvent(BA.java:166)
at anywheresoftware.b4a.objects.ViewWrapper$1.onClick(ViewWrapper.java:78)
at android.view.View.performClick(View.java:5714)
at android.widget.TextView.performClick(TextView.java:10926)
at android.view.View$PerformClick.run(View.java:22589)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:7325)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
** Activity (main) Pause, UserClosed = true **
--------- beginning of system
*** Service (starter) Create ***
** Service (starter) Start **
** Activity (main) Create, isFirst = true **
** Activity (main) Resume **
** Activity (main) Pause, UserClosed = true **
*** Service (starter) Create ***
** Service (starter) Start **
** Activity (main) Create, isFirst = true **
** Activity (main) Resume **
 
When you initialize the spotlight menu the target view is a button in your example but it says:

Liguna.activity

What means .activity?

Just put the name of the button.
 
Upvote 0
Hi. Thanks for reply. The splight initialization is barely copied from the Example, namely (original code):

Code: Copy
Sub Globals
    Private splight As SpotLight
    Private Button1 As Button '<<<<<<<<<<<<<<<<<<<
End Sub

Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("1")
   
    Dim icon As Bitmap
    icon.Initialize(File.DirAssets,"images.png")
   
    splight.Initialize(Me,"splight",10%y,False,False,True,Button1,Activity) '<<<<<<<<<<<<<<<
    splight.additem("Inbox (5)",Colors.Black,18,icon)
    splight.additem("Refresh",Colors.Black,18,Null)
    splight.additem("Compose",Colors.Black,18,Null)

I replicate here my code:
Code: Copy
Sub Globals
    Private splight As SpotLight
    Private Lingua As Button '<<<<<<<<<<<<<
End Sub

Sub Activity_Create(FirstTime As Boolean)
    
    Activity.LoadLayout("Main")
  
    Dim Italia,England,Russia As Bitmap

    Italia.Initialize(File.DirAssets,"italia.jpg") ' various icons
    England.Initialize(File.DirAssets,"england.jpg")
    Russia.Initialize(File.DirAssets,"russia.jpg")
   
    splight.Initialize(Me,"splight",10%y,False,False,True,Lingua,Activity) '<<<<<<<<<<<<<<
   
    splight.additem("Italia", Colors.Black,18,Italia)
    splight.additem("England",Colors.Black,18,England)
    splight.additem("Russia", Colors.Black,18,Russia)

End Sub
The Lingua button is defined in the Layout "Main". As I wrote, anyway, the difference is that the Lingua button, as long all the Views in Main layout,have Activity as parent. In the Example, all Views are inside a Panel and have it as parent.
By the way, could the menu be displayed from top to bottom? Actually I am forced to put it at the bottom and normally the choice of language is put on the top of the screen. Thanks.
 
Upvote 0
By the way I notice that two of the jpg files, namely england.jpg and russia.jpg were not included in the zip file. You can change their references in my code with italia.jpg for all the three icons. Actually, in the files folder, the two files are present. If necessary I can send them.
 
Upvote 0
Hi. By the way, I tried the program on another computer and got no errors.. Project is stored in "OneDrive", so I access to the same code. So, much probably, the problem is due to something wrong in the other computer. Sorry, but it happened. It remains the question of the top-bottom display, seen that you are the author. Thanks
 
Upvote 0
everything works fine here:

Screenshot_2017-06-11-16-16-05.png


It remains the question of the top-bottom display, seen that you are the author

the answer is yes, have you seen the instruction when you initialize the spmenu?

spdown.png
 
Upvote 0
Back
Top