Semplicissimo test: Creo una List con dei type, la salvo in un file e quando la leggo ricevo l'errore. Perchè?
Test in B4J (ma credo sia uguale in B4A)
Error occurred on line: 54 (B4XMainPage)
java.lang.ClassCastException: class java.lang.String cannot be cast to class b4j.example.b4xmainpage$_persona (java.lang.String is in module java.base of loader 'bootstrap'; b4j.example.b4xmainpage$_persona is in unnamed module of loader 'app')
at b4j.example.b4xmainpage._button3_click(b4xmainpage.java:135)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
...
...
ecc
Test in B4J (ma credo sia uguale in B4A)
Error occurred on line: 54 (B4XMainPage)
java.lang.ClassCastException: class java.lang.String cannot be cast to class b4j.example.b4xmainpage$_persona (java.lang.String is in module java.base of loader 'bootstrap'; b4j.example.b4xmainpage$_persona is in unnamed module of loader 'app')
at b4j.example.b4xmainpage._button3_click(b4xmainpage.java:135)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
...
...
ecc
B4X:
Sub Class_Globals
Private Root As B4XView
Private xui As XUI
Private Const FileNameList As String = "LaLista.txt"
Type Persona(Nome As String, Cognome As String, Eta As Int, Hobby(3) As String)
End Sub
Public Sub Initialize
' B4XPages.GetManager.LogEvents = True
xui.SetDataFolder("ZZZmiaCartella")
End Sub
'This event will be called once, before the page becomes visible.
Private Sub B4XPage_Created (Root1 As B4XView)
Root = Root1
Root.LoadLayout("MainPage")
End Sub
Private Sub Button3_Click
'Creazione di una Lit di type e salvataggio del file
Dim aList1 As List
aList1.Initialize
Dim mHobby(2) As String
mHobby(0)="Sport"
mHobby(1)="Musica"
aList1.Add(CreaPersona("ABATE","ALDO", 12,mHobby))
mHobby(0)="Canto"
mHobby(1)="Caccia"
aList1.Add(CreaPersona("BALDI","BRUNO", 32, mHobby))
File.WriteList(xui.DefaultFolder,FileNameList,aList1)
'Lettura del file e memorizzazione nell List
aList1.Clear
aList1=File.ReadList(xui.DefaultFolder, FileNameList)
Dim i As Int
For i = 0 To aList1.Size-1
Dim mPer As Persona = aList1.Get(i) '====>>QUI DA' ERRORE'
' Anche usando
For each mPer as Persona in aList1
'ottengo errore. Perchè no posso usarlo?
Log(mPer.Nome)
Next
End Sub
Public Sub CreaPersona (Nome As String, Cognome As String, Eta As Int, Hobby() As String) As Persona
Dim aPerson As Persona
aPerson.Initialize
aPerson.Nome = Nome
aPerson.Cognome = Cognome
aPerson.Eta = Eta
aPerson.Hobby = Hobby
Return aPerson
End Sub