CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: complicazio con ben 2 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: 9mm con ben 10 Thanks ricevuti negli ultimi sette giorni
Utente del mese: 9mm con ben 34 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 3 su 3
Discussione:

onSaveInstanceState/onRestoreInstanceState

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Baby Droid L'avatar di Leonerd94


    Registrato dal
    Dec 2016
    Messaggi
    2

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    onSaveInstanceState/onRestoreInstanceState

    Ciao a tutti, vi espongo il mio problema: sto cercando di capire come salvare gli stati dell'activity per renderli disponibili anche dopo essere entrato in un'altra activity e successivamente tornati indietro.

    Quando si apre per la prima volta l'app, nella MainActivity compare un dialog che richiede di inserire un nome: premendo "Continue" compare sulla schermata un messaggio di benvenuto personalizzato, premendo "Cancel" un messaggio non personalizzato. Fin qui tutto ok, il problema è che quando poi passo a una seconda activity e torno indietro, il messaggio è scomparso, mentre vorrei che rimanesse sempre presente sull'activity principale.

    Questa è la mia activity:

    codice:
    public class MainActivity extends AppCompatActivity
    {
        private static boolean firstTime = true;
        private TextView welcoming = null;
        private String welcomingString = null;
    
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
    
            setContentView(R.layout.activity_main);
    
            if(firstTime)
                showDialogForm();
    
            welcoming = (TextView) findViewById(R.id.welcoming);
            welcomingString = (String) welcoming.getText();
        }
    
        private void showDialogForm()
        {
            final Dialog d = new Dialog(this);
            d.setTitle("Login");
            d.setCancelable(false);
            d.setContentView(R.layout.dialog_login);
            d.show();
    
            Button continueButton = (Button) d.findViewById(R.id.continueButton);
            Button cancelButton = (Button) d.findViewById(R.id.cancelButton);
    
            continueButton.setOnClickListener
                    (
                            new View.OnClickListener()
                            {
                                public void onClick(View view)
                                {
                                    EditText name = (EditText) d.findViewById(R.id.account_name);
    
                                    welcoming.setText("Welcome " +name.getText()+ ", this is my application!");
    
                                    welcoming.setTextSize(20);
    
                                    welcomingString = (String) welcoming.getText();
    
                                    d.cancel();
    
                                }
                            }
    
                    );
    
            cancelButton.setOnClickListener
                    (
                            new View.OnClickListener()
                            {
                                public void onClick(View view)
                                {
                                    welcoming.setText("Welcome, this is my application!");
    
                                    welcoming.setTextSize(20);
    
                                    d.cancel();
    
                                }
                            }
    
                    );
    
            firstTime = false;
    
        }
    
        public void onSaveInstanceState (Bundle state)
        {
            super.onSaveInstanceState(state);
    
            state.putString("WelcomingText", welcomingString);
        }
    
        public void onRestoreInstanceState (Bundle state)
        {
            super.onRestoreInstanceState(state);
    
            welcoming.setText(state.getString("WelcomingText"));
        }

    Ho utilizzato i metodi onSaveInstanceState e onRestoreInstanceState. Il bundle viene salvato correttamente, il problema è che il metodo onRestore non viene mai eseguito. Ho provato a recuperare le informazioni anche dall'onCreate stesso ma questo risulta sempre null. Mi aiutate?

  2.  
  3. #2
    Androidiani Power User L'avatar di NiloGlock


    Registrato dal
    Feb 2013
    Località
    Sassari
    Messaggi
    25,641
    Smartphone
    LG G2, LeMax 2

    Ringraziamenti
    2,561
    Ringraziato 6,826 volte in 5,301 Posts
    Predefinito

    Sposto in sezione programmazione.

    Inviato dal mio LeMax 2 utilizzando Tapatalk
    REGOLAMENTO CONSIGLI SULL'UTILIZZO DEL FORUM F.A.Q. DEL FORUM MANUALE BBCODES



    STORIA DELLE VERSIONI DI ANDROID
    __________________________________________________

    Smartphone:

  4. #3
    Androidiano L'avatar di Nem3sis


    Registrato dal
    Sep 2011
    Località
    Roma
    Messaggi
    260
    Smartphone
    Sony Xperia Z3

    Ringraziamenti
    101
    Ringraziato 70 volte in 52 Posts
    Predefinito

    Non usare quel metodo, sposta la logica nell''onCreate (alla fine dopo aver inizializzato tutte le View): se la variabile savedInstanceState è diversa da null allora estrai quello che hai salvato e settalo nella TextView
    Sony Xperia Z3 currently running: Fragment ROM

    Android developer
    My apps: E.R.map


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy