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?

LinkBack URL
About LinkBacks
Rispondi quotando

