Autore Topic: Salvare le scritte di una EditText  (Letto 261 volte)

Offline FraCH

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Huawei p9lite
  • Sistema operativo:
    Windows 10.8
Salvare le scritte di una EditText
« il: 02 Novembre 2016, 13:04:15 CET »
0
Io vorrei una EditText che alla chiusura e riapertura dell app conservi il suo testo

Offline wlf

  • Utente normale
  • ***
  • Post: 315
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    Xperia
Re:Salvare le scritte di una EditText
« Risposta #1 il: 02 Novembre 2016, 14:42:21 CET »
0
Scrivere il valore nelle sharedpreference e ricaricarlo?

Offline robcanini

  • Nuovo arrivato
  • *
  • Post: 10
  • Respect: +3
    • Mostra profilo
Re:Salvare le scritte di una EditText
« Risposta #2 il: 02 Novembre 2016, 16:38:42 CET »
+1
Non esistono sistemi automatici per cachare il valore inserito in una EditText, ma esistono diversi modi per raggiungere il tuo obiettivo, i principali:
  • Utilizzare le Shared Preferences
  • Utilizzare il motore SQLite nativo di android
Il valore lo devi settare all'onChange dell'input, quindi dovrai utilizzare un TextWatcher collegato alla EditText, in modo da salvare in tempo reale la stringa inserita.
Così l'utente non deve cliccare in qualche tasto "Salva" e si salva in modo automatico.

Ciao

Offline wlf

  • Utente normale
  • ***
  • Post: 315
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    Xperia
Re:Salvare le scritte di una EditText
« Risposta #3 il: 02 Novembre 2016, 16:50:15 CET »
+1
Occhio alle Shared Preferences; sono "pericolose", raramente potresti anche non ritrovare il valore salvato!

Offline robcanini

  • Nuovo arrivato
  • *
  • Post: 10
  • Respect: +3
    • Mostra profilo
Re:Salvare le scritte di una EditText
« Risposta #4 il: 02 Novembre 2016, 17:18:19 CET »
0
Occhio alle Shared Preferences; sono "pericolose", raramente potresti anche non ritrovare il valore salvato!
Se il valore viene salvato con un namespace univoco, se ad ogni salvataggio viene eseguito il commit e se si rispettano i limiti in termini di spazio fisico (le shared preferences sono files xml quindi c'è un limite di cose che puoi scrivere)
allora non dovrebbe incombere in problemi di consistenza del dato.
Anche perchè se deve salvare solo una stringa, risulta overkill predisporre l'infrastruttura sqlite con layer dao e servizi per la scrittura del dato a db.

Ciao.

Offline wlf

  • Utente normale
  • ***
  • Post: 315
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    Xperia
Re:Salvare le scritte di una EditText
« Risposta #5 il: 02 Novembre 2016, 17:44:23 CET »
0
Non conta; ci sono dei rarissimi casi in cui vengono comunque perse.

Offline robcanini

  • Nuovo arrivato
  • *
  • Post: 10
  • Respect: +3
    • Mostra profilo
Re:Salvare le scritte di una EditText
« Risposta #6 il: 03 Novembre 2016, 11:58:55 CET »
+2
Non conta; ci sono dei rarissimi casi in cui vengono comunque perse.
Quei rarissimi casi sono casi sistematici e catchabili.
Dalla documentazione:
Citazione
Note that when two editors are modifying preferences at the same time, the last one to call commit wins.
(http://developer.android.com/reference/android/content/SharedPreferences.Editor.html#commit%28%29)
Se la sua applicazione rispetta i criteri di concorrenza di accesso al dato e quindi evita di accedere alle SP in modo asincrono da più punti dell'applicazione, viene salvato l'ultimo commit, chiaramente.

Non esistono casi in cui non venga salvato il valore per altri motivi al di fuori della concorrenza di accesso.
Il caso specifico richiesto dalla domanda, rispetta sicuramente questi criteri e quindi non incorre nei problemi che hai citato.

Ciao

Offline wlf

  • Utente normale
  • ***
  • Post: 315
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    Xperia
Re:Salvare le scritte di una EditText
« Risposta #7 il: 03 Novembre 2016, 12:28:39 CET »
0
Tralasciando che ora non si usa più la commit ma la apply ci sono comunque casi in cui ti ritrovi le SharedPreferences "vuote" o con valori "bizzarri" senza che l'App abbia modificato esplicitamente quel valore.

Può accadere anche senza accessi concorrenziali; se centralizzi la modifica in un asynctask o service e lo termini durante la scrittura ti potresti ritrovare con la frittata ...

Nel caso specifico è quasi impossibile, sempre che non si riesca a killare l'App durante la scrittura delle SP; il SO potrebbe unilateralmente killare l'App.

Offline robcanini

  • Nuovo arrivato
  • *
  • Post: 10
  • Respect: +3
    • Mostra profilo
Re:Salvare le scritte di una EditText
« Risposta #8 il: 03 Novembre 2016, 13:04:34 CET »
0
Non sono ancora convinto. Ad ogni modo tornando al quesito principale
Citazione
Io vorrei una EditText che alla chiusura e riapertura dell app conservi il suo testo
@FraCH necessita di persistere una banale stringa all'onChange o al focusOut del valore di una EditText di un'Activity.
Possiamo essere d'accordo quindi sul fatto che le SP siano una scelta ottimale in questo singolo caso.

Offline wlf

  • Utente normale
  • ***
  • Post: 315
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    Xperia
Re:Salvare le scritte di una EditText
« Risposta #9 il: 03 Novembre 2016, 16:35:28 CET »
0
Oppure semplicemente all'onPause così salvi solo l'ultimo valore dell'EditText prima che l'App vada in pausa ... potresti però perdere l'ultimo valore che avevi se togli la batteria!