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?