I am not sure if this is the normal behavior for a custom data type. This is what I did.
I have 3 modules - Main (Activity), Second (Activity), Global (Code)
This is Main activity
This is Global code module
This is Second activity
Run the app. You will see a msgbox that shows the value of variable.a as 10. Now press Menu button to load Second activity. Now press back button to get back to the Main activity. Now the msgbox will show the value of variable.a as 39.
Is this the normal behavior? I was under the impression that the value of only Process Global variables can be changed from another activity. I am attaching a small project (under 10 lines) to show this issue.
I have 3 modules - Main (Activity), Second (Activity), Global (Code)
This is Main activity
B4X:
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.
Type VariableType(a,b As Int)
Dim variable As VariableType
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("Layout1")
Activity.Title="Main Activity"
variable.Initialize
variable.a=10
End Sub
Sub Activity_Resume
Msgbox(variable,"Variable")
End Sub
Sub Activity_Pause (UserClosed As Boolean)
End Sub
Sub Activity_KeyPress (KeyCode As Int) As Boolean 'Return True to consume the event
If keycode=KeyCodes.KEYCODE_MENU Then
Global.GlobalV=variable
StartActivity(Second)
End If
End Sub
This is Global code module
B4X:
'Code module
'Subs in this code module will be accessible from all modules.
Sub Process_Globals
'These global variables will be declared once when the application starts.
'These variables can be accessed from all modules.
Dim GlobalV As VariableType
End Sub
B4X:
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.
Dim secondv As VariableType
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("Layout1")
Activity.Title="Second Activity"
secondv.Initialize
secondv=Global.GlobalV
secondv.a=39
End Sub
Sub Activity_Resume
End Sub
Sub Activity_Pause (UserClosed As Boolean)
End Sub
Run the app. You will see a msgbox that shows the value of variable.a as 10. Now press Menu button to load Second activity. Now press back button to get back to the Main activity. Now the msgbox will show the value of variable.a as 39.
Is this the normal behavior? I was under the impression that the value of only Process Global variables can be changed from another activity. I am attaching a small project (under 10 lines) to show this issue.