Italian Riconoscimento utente

guido valentino

Member
Licensed User
Longtime User
Ciao ragazzi scusate la domanda stupida ma volevo semplicemente sapere come identificare un utente all apertura dell aplicazione. Mi spiego meglio: quando l utente apre l app mi serve di controllare se è la prima volta che accede e in base a questo chiedergli il nome oppure passare direttamente alla seconda schermata, e in questo caso devo recuperari dei dati che ho salvato in un database mysql (questa cosa gia l ho fatta).
 

guido valentino

Member
Licensed User
Longtime User
grazie, devo farti un'altra domanda, scusami la stupidità:
come faccio ad usare in una sub una variabile che si trova all'interno di un'altra sub e che magari è cambiata? praticamente la devo richiamare
 

iz0ndg

Active Member
Licensed User
Longtime User
Non so se ho capito bene, comunque se devi usare il contenuto di una variabile in più Sub potresti dichiararla all'interno di 'Globals'.
In questo modo è a tua disposizione all'interno di tutto il modulo.

Se invece la stessa ti serve anche in altri moduli la dichiari in 'Process_Globals'.
 

guido valentino

Member
Licensed User
Longtime User
Niente scusa avevo sbagliato io una cosa nel codice.
Ma tornando al keyvaluestore mi puoi spiegare un attimo al volo come potrei fare per controllare l'utente all'avvio e per la prima volta?
mi serve semplicemente sapere se è la prima volta che apre l'app e in questo caso aprire l'attivita per farglielo inserire. Se invece ha gia inserito il nome apre un'altra attivita :)
 

FabioCrank

Member
Licensed User
Longtime User
Ciao, io per esempio farei così...
1) Controllo se in una directory locale del telefono esiste un file che per esempio chiamo start.ini
se non esiste, significa che è la prima volta che si apre l'app e quindi apro il form che decido io e poi scrivo fisicamente il file start.ini.
La seconda volta che apro l'app il file questa volta esiste e di conseguenza il software può decidere di aprire un altro form.
Oppure
2) Eseguo una query in una tabella che chiamo start
se non trovo nessun record, significa che è la prima volta che si apre l'app e quindi apro il form che decido io e poi scrivo fisicamente un record nella
tabella start
La seconda volta che apro l'app la query mi restituisce un valore e di conseguenza il software può decidere di aprire un altro form.
 

iz0ndg

Active Member
Licensed User
Longtime User
Scritto al volo...

B4X:
Sub Process_Globals
 Private kvs As KeyValueStore
End Sub

Sub Globals

End Sub

Sub Activity_Create(FirstTime As Boolean)
If FirstTime Then
   kvs.Initialize(File.DirDefaultExternal, "datastore")
End If
If kvs.ContainsKey("nome") Then
   ' se il nome esiste
   StartActivity("nomegiainserito")
Else
  StartActivity("chiediilnome")
  'dopo l'input salvi la stringa con Main.kvs.PutSimple("nome", nome)
End If
End Sub

Per l'uso di KeyValueStore devi includere le librerie SQL e RandomAccessFile
 

guido valentino

Member
Licensed User
Longtime User
Grazie mille, un'ultima cosa, per mettere una sorta di pagina di caricamento quando l app si sta aprendo come posso fare? :) perché si deve collegare ad un database e ci possono volere qualche secondo e nell attesa mettere qualcosa :)
 

iz0ndg

Active Member
Licensed User
Longtime User
Potresti usare
B4X:
ProgressDialogShow("Attendi")
prima del collegamento e
B4X:
ProgressDialogHide
alla fine
 

guido valentino

Member
Licensed User
Longtime User
:DAh già.
Se ti chiedo un'altra cosa mi ammazzi?
Come faccio a creare una finestra che si apre nella stessa schermata quando si clicca su un bottone.
E magari personalizzare questa finestra (colore sfondo, label, bottoni, ecc)??? :) ho visto un po i classes Module ma non so se aprono anche finestre personalizzabili
 

LucaMs

Expert
Licensed User
Longtime User
Crei un Panel e lo imposti invisibile. Dentro ci carichi un layout creato col Designer.
Quando deve apparire, imposti pnlNomePannello.Visible = True.

Attenzione, però, che se il pannello non prende tutto la schermata, le view sottostanti saranno attive. Per evitare questo, dovresti usare due panel, uno grande quanto tutto lo schermo con color transparent e l'altro, più piccolo, contenuto in questo primo. In questo caso dovrai impostare la visibilità a False e True del pannello grande, il piccolo sarà sempre True.

Infine:
B4X:
Sub pnlTrasparente_Click
    ' lasciare vuota
End Sub
 
Top