Italian Mettere in backgroud app con tasto Back

CyclopDroid

Well-Known Member
Licensed User
Longtime User
Ciao a tutti, è la prma volta che mi avvicino al mondo Android e trovo questo B4A molto bello. Più completo rispetto a AppInventor anche se, purtroppo, non molto alla mano (119€ per 2 anni, calcolando che le app android sono perlopiù gratuite, altrimenti android farebbe la fine del IOS, sono un po troppi...certo, se fossero stati per sempre allora lo acquisterei e non andrei avanti con le varie versioni prova che è limitata ;) .).
Comunque, tralasciando la cosa, vengo alla mia domanda.
1) Ho fatto una piccola app per prova, dove riempio un EditText ma, una volta premuto il tasto Back, e quindi l'app va in background, alla riapertura, quello che avevo digitato dentro la EditText non c'è più. Nel Back ho solo messo un Return False.
2) Se, una volta premuto il tasto Back, dico di chudere l'app, questa va sempre in background ma resta sempre li e devo chiuderla io, trascinandola dal desktop. In questo caso, nell'azione, ho messo:
ExitApplication
Activity.Finish

... ma non termina definitivamente.

Come posso fare in modo che
1) Alla riattivazione dell'App (dopo il Back), i valori presenti nel EditText non si perdano (tipo quando si preme il tasto HOME, he non viene riconosciuto)?
2) Una volta pemuto il tasto BACK e hiusa la app...come fare in modo che venga terminata completamente (quindi non appaia nella lista delle app aperte)??
Grazie.;)
 
Last edited:

CyclopDroid

Well-Known Member
Licensed User
Longtime User
1) grazie domani darò un occhiata ;)
2) No. Anche se la salco in Release, questa mi rimane sempre aperta... o meglio, all'interno non si vede nulla fin quando non la seleziono per riaprirla (usando l'ExitApplication), altrimenti resta solo in standby.

Ora, avrò fatto un casino perhé mi è sparito il menu :O
Mah! avrò fatto qualche impiccio nelle variabili della traduzione (non avendo librerie mi è toccato farmela da sola)... domani ricontrollerò anche questo :(
Grazie per la risposta.
 

CyclopDroid

Well-Known Member
Licensed User
Longtime User
Scusa LucaMs, ma il modulo StateManager è costruito sopra quella App di prova.
Le sub innerRestoreState e innerSaveState non leggono ciò che viene passato dal Main, ma si rifeiscono solo sui componenti utilizzati per quella App. :(
Usando dei Text, Image e Button dovrebbe essere cambiata completamente a personam :(
 

LucaMs

Expert
Licensed User
Longtime User
Ora non ricordo l'app di prova, ma tu devi utilizzare solo il modulo di codice (.bas) che aggiungi al tuo progetto.
Poi, utilizzi le sue funzioni per le tue view, nello stesso modo in cui fà l'app di prova.
 

CyclopDroid

Well-Known Member
Licensed User
Longtime User
Già, è proprio all'interno del file .bas che vengono gestiti gli oggetti che utilizza l'App di prova... quindi, ogni volta, dovrei cambiare le sub innerRestoreState e innerSaveState :(
A questo punto, visto che bisogna comunque implementare tutti gli oggetti presenti nei vari panel, non capisco a cosa serva. Cioè, è la stessa cosa di passare i valori degli oggeti in un file e poi rileggerli, oppure passarli in una list. :confused:
Correggetemi se sbaglio.
 

LucaMs

Expert
Licensed User
Longtime User
Il tuo post è arrivato soltanto in questo momento (15:33) anche se riporta 12:24.

Non ricordo come funziona, ma sono certo che non sia come dici. Il file .bas non va modificato, per ottenere il salvataggio.

Gli darò di nuovo un'occhiata e ti farò un altro esempio... adesso sto litigando con altro codice :D
 

LucaMs

Expert
Licensed User
Longtime User
In quel primo post c'è questo esempio:
B4X:
Sub Activity_Create(FirstTime As Boolean)

    ...
    'Load the previous state
    If StateManager.RestoreState(Activity, "Main", 60) = False Then
        'set the default values
        EditText1.Text = "Default text"
        EditText2.Text = "Default text"
    End If
End Sub

Sub Activity_Pause (UserClosed As Boolean)
    If UserClosed Then
        StateManager.ResetState("Main")
    Else
        StateManager.SaveState(Activity, "Main")
    End If
    StateManager.SaveSettings
End Sub

Tu avrai view diverse, quindi sostituirai, nella Activity_Create della tua Activity, le EditText 1 e 2 con le tue view.
 

CyclopDroid

Well-Known Member
Licensed User
Longtime User
Ma, avendo all'interno del .bas solo alcuni oggetti, come posso inserire la posizione e i valori di uno sprite? Inserendola in un EditText?
Ho ampliato la mia App e, da prova inisziale, sta crescendo e venendo bene! ;)
Per ora, non capisco il perché ma, il dispositivo di un mio amico, con la Key Fisica (e non le Soft Key), non riese a vedere il menu! :(
 

LucaMs

Expert
Licensed User
Longtime User
AAAAHHHHH ecco il punto :) gli sprite! (non ne so molto, soprattutto in questo ambiente).

Quello che so, è che sono immagini svolazzanti in varie direzioni, per cui per salvarli dovrai salvare le coordinate (che sono numeri) ed eventualmente uno stato (valore booleano) che sarà "Vivo", "Morto", "Ferito" :D, magari anche l'immagine.

Quindi, puoi creare un tipo (Type) che rappresenta lo sprite e salvarlo come oggetto!

Per la tastiera fisica, non so proprio. Probabilmente sarà un problema di versione del sistema operativo e con altri dispositivi funzionerà.

Mi fà piacere che la tua app stia migliorando, così poi ci dai tu qualche dritta sui game ;)
 

CyclopDroid

Well-Known Member
Licensed User
Longtime User
Hihihi troppo fiducioso! :p
Il mio metodo di programmazione è sempre allo stato del disordine universale... ecco perché molte volte mi perdo anche nelle cose più sciocche. Pensa a postare anche una parte di un mio codice... ci vorrebbe il caos che è nella mia testa per decifrarlo :confused::D
C'è chi, giustamente, chiama le variabili in modo del tipo TxtLivUp (per indicare, come si deduce, Testo Livello Superiore), mentre io metto cose tipo Punteggio :eek:
Ho sempre fatto così e mi ci sono sempre perso perché non capivo a cosa si riferiva... è una vita che programmo nei più disparati linguaggi e, ogni volta, mi dico "devo mettere la testa apposto e creare dei nomi che si capiscano" ma una cosa e dire e una e farlo. Infati, appena inizio un nuovo proggetto... Nisba! :D
Per il fatto del menu, ne creerò uno a scomparsa, in modo che lo possano vedere tutti i dispoitivi.
Ma anche per i dati penso che li metterò in una mia lista, a cui passerò i vari valori e che leggerò alla riapertura. ;)
Ciao.
 

CyclopDroid

Well-Known Member
Licensed User
Longtime User
Yah! cercando, ho trovato quello che mi serviva per mettere in Pausa l'APP.
Il grande Erel aveva dato la soluzione QUI :D;)
Praticamente, una volta che premo BACK, simulo la pressione del tasto HOME e, quindi, i dati restano attivi! :)
 
Top