Alberto Michelis Well-Known Member Licensed User Longtime User Dec 6, 2018 #1 Hi, I have a sub in an Activity that I need to call from other activities. This sub involves Sql calls and web dowloads. I need to be sure that this Sub is completed before continue. Ive tested CallSubdelayed and it is not called when I need and CallSub seams not to work. How can I do it?
Hi, I have a sub in an Activity that I need to call from other activities. This sub involves Sql calls and web dowloads. I need to be sure that this Sub is completed before continue. Ive tested CallSubdelayed and it is not called when I need and CallSub seams not to work. How can I do it?
advansis Active Member Licensed User Longtime User Dec 6, 2018 #2 (Forgive me Erel if I'm wrong!) When you call a sub belonging to an activity, that activity must be the current one... If you call a sub by "CallSubDelayed", the activity will be started, if not already; if you call it by "CallSub", the activity should be visible, otherwise the sub wil not be called (so it is used for calling activity-subs from services or classes) Why not considering moving your sub in a code/module or class/module ? Upvote 0
(Forgive me Erel if I'm wrong!) When you call a sub belonging to an activity, that activity must be the current one... If you call a sub by "CallSubDelayed", the activity will be started, if not already; if you call it by "CallSub", the activity should be visible, otherwise the sub wil not be called (so it is used for calling activity-subs from services or classes) Why not considering moving your sub in a code/module or class/module ?
Alberto Michelis Well-Known Member Licensed User Longtime User Dec 7, 2018 #3 Ive tried to move it to a Code Module but, dont recal what I cant do in a Code module, Sql or Http, so I was forced to keep it in an activity. I use a service too, if I move it to the service, will I can call it with CallSub? Upvote 0
Ive tried to move it to a Code Module but, dont recal what I cant do in a Code module, Sql or Http, so I was forced to keep it in an activity. I use a service too, if I move it to the service, will I can call it with CallSub?
Erel B4X founder Staff member Licensed User Longtime User Dec 7, 2018 #4 Read this: Using CallSubDelayed to interact between activities and services Code modules cannot handle events and cannot be called with CallSub or CallSubDelayed. Use a class instead. Upvote 0
Read this: Using CallSubDelayed to interact between activities and services Code modules cannot handle events and cannot be called with CallSub or CallSubDelayed. Use a class instead.
Alberto Michelis Well-Known Member Licensed User Longtime User Dec 7, 2018 #5 Ok, how to do it?, Ive never done it, any doc to read? Upvote 0
Alberto Michelis Well-Known Member Licensed User Longtime User Dec 7, 2018 #6 Im trying but and having errors. I need a SaxParser and a Sql in the class If I dim it in globals I get error initializing them in a sub How to deal with it? Sub Class_Globals Dim SQL1 As SQL Dim parser As SaxParser Dim Params As Map End Sub 'Initializes the object. You can add parameters to this method if needed. Public Sub Initialize End Sub Sub wNtSyncro(pIdApp As Int,pIdw32 As Int) parser.Initialize SQL1.Initialize(File.DirInternal, "portit.db", True) If Main.VersionNivel>0 And Main.NrSerieWindows<>"" And Main.IdCartera<>0 Then ProgressDialogShow(cMessage) ..... Calling this method using: Dim s as ntsync s.wNtSyncro(0,0) I get : ntsync_wntsyncro (java line: 569) java.lang.NullPointerException: Attempt to invoke virtual method 'void anywheresoftware.b4a.objects.SaxParser.Initialize(anywheresoftware.b4a.BA)' on a null object reference at armi.portit.ntsync._wntsyncro(ntsync.java:569) at armi.portit.mposicion._popupmenu_itemclicked(mposicion.java:2081) at armi.portit.mposicion._abpop_itemclicked(mposicion.java:466) at java.lang.reflect.Method.invoke(Native Method) at anywheresoftware.b4a.BA.raiseEvent2(BA.java:186) at anywheresoftware.b4a.BA$1.run(BA.java:325) 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) java.lang.NullPointerException: Attempt to invoke virtual method 'void anywheresoftware.b4a.objects.SaxParser.Initialize(anywheresoftware.b4a.BA)' on a null object reference Upvote 0
Im trying but and having errors. I need a SaxParser and a Sql in the class If I dim it in globals I get error initializing them in a sub How to deal with it? Sub Class_Globals Dim SQL1 As SQL Dim parser As SaxParser Dim Params As Map End Sub 'Initializes the object. You can add parameters to this method if needed. Public Sub Initialize End Sub Sub wNtSyncro(pIdApp As Int,pIdw32 As Int) parser.Initialize SQL1.Initialize(File.DirInternal, "portit.db", True) If Main.VersionNivel>0 And Main.NrSerieWindows<>"" And Main.IdCartera<>0 Then ProgressDialogShow(cMessage) ..... Calling this method using: Dim s as ntsync s.wNtSyncro(0,0) I get : ntsync_wntsyncro (java line: 569) java.lang.NullPointerException: Attempt to invoke virtual method 'void anywheresoftware.b4a.objects.SaxParser.Initialize(anywheresoftware.b4a.BA)' on a null object reference at armi.portit.ntsync._wntsyncro(ntsync.java:569) at armi.portit.mposicion._popupmenu_itemclicked(mposicion.java:2081) at armi.portit.mposicion._abpop_itemclicked(mposicion.java:466) at java.lang.reflect.Method.invoke(Native Method) at anywheresoftware.b4a.BA.raiseEvent2(BA.java:186) at anywheresoftware.b4a.BA$1.run(BA.java:325) 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) java.lang.NullPointerException: Attempt to invoke virtual method 'void anywheresoftware.b4a.objects.SaxParser.Initialize(anywheresoftware.b4a.BA)' on a null object reference
Alberto Michelis Well-Known Member Licensed User Longtime User Dec 7, 2018 #7 Including the sql.init and parse.init in the Initialize of the class does it! Now I heve other problems posted in a new thread. Thanks Upvote 0
Including the sql.init and parse.init in the Initialize of the class does it! Now I heve other problems posted in a new thread. Thanks