Dopo tanto "commenta e prova" forse ho trovato il problema. In un ciclo
For i = 0 To dbCursor.RowCount - 1
dbCursor.position = i
doevents
...
per disegnare una tabella la variabile i non era stata definita.
La sub in questione era chiamata dentro un edittext_enterpressed, il programma schiantava all'uscita della sub chiamante.
Aggiungendo dim i = int prima del ciclo for e
togliendo il DoEvents il problema sembra risolto
Il log filtrato non segnava niente, di seguito il log non filtrato da dove mi sembra iniziasse il problema.
DCD OFF
Window spent 25225.9ms processing the last input event:
Fatal signal 11 (SIGSEGV) at 0x0000000c (code=1), thread 1685 (iscoapp.rilinve)
No, nemmeno quello (benché ogni volta che lo cito, Erel mi risponda che non è bene "bloccare" l'esecuzione del Main thread, quindi non mettere lunghi cicli al suo interno).
Cmq, no, non è quello.
Puoi farmi capire A BLOCCHI il flusso dell'app e dove si blocca?
Ah, usa molto i log, soprattutto all'inizio delle routine; questo ti aiuta molto a trovare i bug.
Certo, potresti usarli meglio e velocemente grazie al mio tool AddLogs, ma non voglio fargli pubblicità
puoi inserirli anche a mano (benché AddLogs faccia il log anche dei parametri delle routine)
Ho riprovato anche ora è il problema è il DoEvent, ho mandato una mail a Klaus con il sorgente e vediamo che dice. Il flusso è semplice ho due edit text, una di code e una di quantità e sotto una tabella disegna con la seguente sub. Accetto il codice e la quantità premo enter sulla quantità il programma scrive il record sul DB e ridisegna la griglia chiamando la sub tutto bene. C'è la particolarità del lettore di codici a barre bluetooth in emulazione tastiera. Mi trasmette & - CODICE ARTICOLO - enter.
Quindi nell'etqta_enterpressed se intercetto la & il codice letto diventa il valore della edit del codice, la qta diventa 1 e segue, scrive il DB, chiama la sub per ridisegnare la tabella e nell'end_sub di etqta_enterpressed schianta. In questo caso dentro etqta_enterpressed ci sono alcuni passaggi in più, ma niente di trascendentale e soprattutto nulla che mettesse in crisi Android 3.0.2 e 4.1.2
Con il breack point sull'end_sub vedo che comunque la griglia è disegnata bene.
Togliendo il DoEvents] va che è un piacere, ma poi a che serve DoEvents
B4X:
Sub PopolaScrollview
swelenco.Panel.RemoveAllViews
strquery = "SELECT inventario.id, inventario.codrag, inventario.codart, articoli.descrizione, inventario.qta, inventario.flg_elimina FROM inventario LEFT JOIN articoli ON inventario.codart = articoli.codart WHERE inventario.codrag ='" & etcodrag.Text & "' ORDER BY inventario.id DESC "
dbCursor = Main.dbSql.ExecQuery(strquery)
NumRighe = dbCursor.RowCount
For i = 0 To dbCursor.RowCount - 1
DoEvent
dbCursor.position = i
pnl.Initialize("Pelenco")
swelenco.Panel.AddView(pnl, 0, i * PH, 100%x, PH)
pnl.LoadLayout("LRigaRilInve")
pnl.Tag = dbCursor.GetInt("inventario.id")
lbcodice.Text = dbCursor.GetString("inventario.codart")
lbdesc.Text = dbCursor.GetString("articoli.descrizione")
If lbdesc.Text = Null Or lbdesc.Text = "null" Then
lbdesc.Text = ""
End If
lbqta.Text = dbCursor.GetString("inventario.qta")
If lbqta.Text = "" Or lbqta.Text = " " Then
lbqta.Text = 0
End If
Next
End Sub
Il doevents ti consente di "rinfrescare" la parte grafica dell'activity (aggiornarla).
Mi fa piacere che ti fidi più di Klaus che di me .
Meglio, cmq, perché così mollo sto pc e vado finalmente a colazionare (mio "neologismo" logicissimo: se pranzo->pranzare, ceno-> cenare, colazione-> colazionare )
Ho scritto le stesse cose che ho scritto qua, ma nel mio inglese cacciuccato,... sai le mie opinioni sulla forza del gruppo.
P.S. Buona colazione e grazie.
Il doevents ti consente di "rinfrescare" la parte grafica dell'activity (aggiornarla).
Mi fa piacere che ti fidi più di Klaus che di me .
Meglio, cmq, perché così mollo sto pc e vado finalmente a colazionare (mio "neologismo" logicissimo: se pranzo->pranzare, ceno-> cenare, colazione-> colazionare )
Klaus ha risposto, tradotto in italiano corrente: se Commentando DoEvents funziona lascialo commentato. Della serie "Dottore se mi tocco il braccio mi fa male", "La cura è: non toccarlo".