Sub SaveState(Activity As Activity, ActivityName As String)
If states.IsInitialized = False Then states.Initialize
Dim list1 As List
list1.Initialize
list1.Add(DateTime.Now)
For i = 0 To Activity.NumberOfViews - 1
innerSaveState(Activity.GetView(i), list1)
Next
states.Put(ActivityName.ToLowerCase, list1)
writeStateToFile
End Sub
Sub writeStateToFile
Dim raf As RandomAccessFile
raf.Initialize(File.DirInternal, statesFileName, False)
raf.WriteObject(states, True, raf.CurrentPosition)
raf.Close
End Sub
Sub innerSaveState(v As View, list1 As List)
Dim data() As Object
If v Is EditText Then
Dim edit As EditText
edit = v
data = Array As Object(edit.Text, edit.SelectionStart)
Else If v Is Spinner Then
Dim spinner1 As Spinner
spinner1 = v
data = Array As Object(spinner1.SelectedIndex)
Else If v Is CheckBox Then
Dim check As CheckBox
check = v
data = Array As Object(check.Checked)
Else If v Is RadioButton Then
Dim radio As RadioButton
radio = v
data = Array As Object(radio.Checked)
Else If v Is ToggleButton Then
Dim toggle As ToggleButton
toggle = v
data = Array As Object(toggle.Checked)
Else If v Is SeekBar Then
Dim seek As SeekBar
seek = v
data = Array As Object(seek.Value)
Else If v Is TabHost Then
Dim th As TabHost
th = v
data = Array As Object(th.CurrentTab)
For i = 0 To th.TabCount - 1
th.CurrentTab = i
Next
list1.Add(data)
Dim data() As Object
Dim r As Reflector
r.Target = th
Dim tabParentPanel As Panel
tabParentPanel = r.RunMethod("getTabContentView")
For i = 0 To tabParentPanel.NumberOfViews - 1
innerSaveState(tabParentPanel.GetView(i), list1)
Next
Else If v Is ScrollView Then
Dim sv As ScrollView
sv = v
data = Array As Object(sv.ScrollPosition)
list1.Add(data)
Dim data() As Object
innerSaveState(sv.Panel, list1)
Else If v Is Panel Then
Dim panel1 As Panel
panel1 = v
For i = 0 To panel1.NumberOfViews - 1
innerSaveState(panel1.GetView(i), list1)
Next
End If
If data.Length > 0 Then list1.Add(data)
End Sub