Autore Topic: Salvare il testo di un EditText su file e poi recuperarlo al bisogno: come fare?  (Letto 2058 volte)

Offline zipgenius

  • Utente junior
  • **
  • Post: 80
  • Respect: +17
    • matteoriso
    • Mostra profilo
    • ZipGenius
  • Dispositivo Android:
    Samsung Galaxy S
  • Play Store ID:
    Wininizio.it Software
  • Sistema operativo:
    Windows 7
Ciao.
Nuovo problema.
La mia applicazione consente di inviare un messaggio e-mail e per farlo chiede, attraverso un AlertDialog.Builder con 3 EditText, l'inserimento del nome mittente, e-mail mittente e e-mail destinatario.
Vorrei fare in modo che queste informazioni venissero salvate da qualche parte e fossero successivamente reinserite negli EditText quando l'utente riutilizzerà quella funzione dell'applicazione.
Spero di essere stato chiaro...

Offline DX89B

  • Utente junior
  • **
  • Post: 121
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    HTC Desire
  • Play Store ID:
    Daniele Bonadiman
  • Sistema operativo:
    Mac OS X 10.6
Re:Salvare il testo di un EditText su file e poi recuperarlo al bisogno: come fare?
« Risposta #1 il: 07 Settembre 2010, 23:10:50 CEST »
0
non ho capito bene per quanto devono restare salvati i dati, ciclo di vita dell'applicazione ?
o sono delle impostazioni definitive e quindi hai più o meno il mio stesso problema ?:) vedi post prima del tuo^^

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Salvare il testo di un EditText su file e poi recuperarlo al bisogno: come fare?
« Risposta #2 il: 08 Settembre 2010, 00:00:31 CEST »
+2
Puoi usare le Preferences, ti eviti tutto lo sbattimento di andare a scrivere e leggere da file.

Se ti può servire, ho scritto una classe che fa da wrapper
Codice (Java): [Seleziona]
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.preference.PreferenceManager;

public class MyPreferenceManager {

        SharedPreferences                                       mPreferences = null;
        private static MyPreferenceManager      mInstance = null;

        private MyPreferenceManager ( Context context ) {
                mPreferences = PreferenceManager.getDefaultSharedPreferences( context );
        }

        public static MyPreferenceManager getInstance ( Context context ) {
                if ( mInstance == null ) {
                        mInstance = new MyPreferenceManager( context );
                }

                return mInstance;
        }

        public String getStringPreference ( String name, String defValue ) {
                return mPreferences.getString( name, defValue );
        }

        public void saveStringPreference(String key, String value){
                Editor preferenceEditor = mPreferences.edit();
                preferenceEditor.putString( key, value );
                preferenceEditor.commit();
        }

}

Offline zipgenius

  • Utente junior
  • **
  • Post: 80
  • Respect: +17
    • matteoriso
    • Mostra profilo
    • ZipGenius
  • Dispositivo Android:
    Samsung Galaxy S
  • Play Store ID:
    Wininizio.it Software
  • Sistema operativo:
    Windows 7
Re:Salvare il testo di un EditText su file e poi recuperarlo al bisogno: come fare?
« Risposta #3 il: 08 Settembre 2010, 00:59:55 CEST »
0
Sembra una buona soluzione: la sto provando...

Offline zipgenius

  • Utente junior
  • **
  • Post: 80
  • Respect: +17
    • matteoriso
    • Mostra profilo
    • ZipGenius
  • Dispositivo Android:
    Samsung Galaxy S
  • Play Store ID:
    Wininizio.it Software
  • Sistema operativo:
    Windows 7
Re:Salvare il testo di un EditText su file e poi recuperarlo al bisogno: come fare?
« Risposta #4 il: 08 Settembre 2010, 01:13:48 CEST »
0
non ho capito se il file preferences.xml devo crearlo così come ho letto in alcuni tutorial... L'applicazione mi va in crash. Ho usato questo codice ma non sono sicurissimo che sia corretto:
Codice (Java): [Seleziona]
ImageButton02.setOnClickListener(new OnClickListener() {
                       
                        @Override
                        public void onClick(View arg0) {
                                MyPreferenceManager prefs = null;
                                prefs.saveStringPreference("sendername", "Nome Cognome");
                        prefs.saveStringPreference("sendermail", "mia@mail.it");
                        prefs.saveStringPreference("recpmail", "altra@mail.it");
                               
                        }
                       
                });

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:Salvare il testo di un EditText su file e poi recuperarlo al bisogno: come fare?
« Risposta #5 il: 08 Settembre 2010, 07:37:53 CEST »
0
Non hai inizializzato la variabile prefs, quindi vai in NullPointerException!

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Salvare il testo di un EditText su file e poi recuperarlo al bisogno: come fare?
« Risposta #6 il: 08 Settembre 2010, 10:13:15 CEST »
+1
Codice (Java): [Seleziona]
ImageButton02.setOnClickListener(new OnClickListener() {
                       
                        @Override
                        public void onClick(View arg0) {
                                MyPreferenceManager prefs = MyPreferenceManager.getInstance(TuaActivity.this);
                                prefs.saveStringPreference("sendername", "Nome Cognome");
                        prefs.saveStringPreference("sendermail", "mia@mail.it");
                        prefs.saveStringPreference("recpmail", "altra@mail.it");
                               
                        }
                       
                });

Offline DX89B

  • Utente junior
  • **
  • Post: 121
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    HTC Desire
  • Play Store ID:
    Daniele Bonadiman
  • Sistema operativo:
    Mac OS X 10.6
Re:Salvare il testo di un EditText su file e poi recuperarlo al bisogno: come fare?
« Risposta #7 il: 08 Settembre 2010, 16:59:12 CEST »
0
si può impostare come context l'intera application?

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:Salvare il testo di un EditText su file e poi recuperarlo al bisogno: come fare?
« Risposta #8 il: 08 Settembre 2010, 17:04:22 CEST »
0
si può impostare come context l'intera application?

Che intendi? Forse questo: ContextWrapper.getApplicationContext

Offline DX89B

  • Utente junior
  • **
  • Post: 121
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    HTC Desire
  • Play Store ID:
    Daniele Bonadiman
  • Sistema operativo:
    Mac OS X 10.6
Re:Salvare il testo di un EditText su file e poi recuperarlo al bisogno: come fare?
« Risposta #9 il: 08 Settembre 2010, 17:07:00 CEST »
0
sisi , no volevo dire se nelle SharedPreferences è consentito?

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Salvare il testo di un EditText su file e poi recuperarlo al bisogno: come fare?
« Risposta #10 il: 08 Settembre 2010, 17:07:37 CEST »
0
si può impostare come context l'intera application?

Si può ma è meglio evitare. La tua activity ha un Context, usa quello.

Offline zipgenius

  • Utente junior
  • **
  • Post: 80
  • Respect: +17
    • matteoriso
    • Mostra profilo
    • ZipGenius
  • Dispositivo Android:
    Samsung Galaxy S
  • Play Store ID:
    Wininizio.it Software
  • Sistema operativo:
    Windows 7
Re:Salvare il testo di un EditText su file e poi recuperarlo al bisogno: come fare?
« Risposta #11 il: 08 Settembre 2010, 17:38:08 CEST »
0
Perfetto! Ci sono riuscito e funziona. Grazie a tutti :)

Offline DX89B

  • Utente junior
  • **
  • Post: 121
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    HTC Desire
  • Play Store ID:
    Daniele Bonadiman
  • Sistema operativo:
    Mac OS X 10.6
Re:Salvare il testo di un EditText su file e poi recuperarlo al bisogno: come fare?
« Risposta #12 il: 08 Settembre 2010, 17:47:59 CEST »
0
funziona anche a me  grazie:)
« Ultima modifica: 08 Settembre 2010, 18:04:31 CEST da DX89B »

Offline DX89B

  • Utente junior
  • **
  • Post: 121
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    HTC Desire
  • Play Store ID:
    Daniele Bonadiman
  • Sistema operativo:
    Mac OS X 10.6
Re:Salvare il testo di un EditText su file e poi recuperarlo al bisogno: come fare?
« Risposta #13 il: 12 Settembre 2010, 18:28:38 CEST »
0
Puoi usare le Preferences, ti eviti tutto lo sbattimento di andare a scrivere e leggere da file.

Se ti può servire, ho scritto una classe che fa da wrapper
Codice (Java): [Seleziona]
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.preference.PreferenceManager;

public class MyPreferenceManager {

        SharedPreferences                                       mPreferences = null;
        private static MyPreferenceManager      mInstance = null;

        private MyPreferenceManager ( Context context ) {
                mPreferences = PreferenceManager.getDefaultSharedPreferences( context );
        }

        public static MyPreferenceManager getInstance ( Context context ) {
                if ( mInstance == null ) {
                        mInstance = new MyPreferenceManager( context );
                }

                return mInstance;
        }

        public String getStringPreference ( String name, String defValue ) {
                return mPreferences.getString( name, defValue );
        }

        public void saveStringPreference(String key, String value){
                Editor preferenceEditor = mPreferences.edit();
                preferenceEditor.putString( key, value );
                preferenceEditor.commit();
        }

}


ho utilizzato questo wrapper per la mia applicazione :) xò volevo sapere una cosa , cosa devo cambiare per non far cancellare le sp una volta che spengo e riaccendo il telefono?

Offline Qlimax

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 757
  • Respect: +203
    • Google+
    • _Qlimax
    • Mostra profilo
    • www.egsolutions.ch
  • Dispositivo Android:
    Galaxy Nexus - Nexus One - Wildfire - Magic
  • Play Store ID:
    egsolutions.ch
  • Sistema operativo:
    Ubuntu 12.04, Windows 7
Re:Salvare il testo di un EditText su file e poi recuperarlo al bisogno: come fare?
« Risposta #14 il: 12 Settembre 2010, 19:55:36 CEST »
0
le shared preferences non vengono cancellate al riavvio.
quindi puoi lasciare così ;)