Allora l'app si apre con un dialog che richiede di inserire un nome, premendo "Continue" viene stampato un messaggio di benvenuto personalizzato, altrimenti premendo "Cancel" il messaggio non viene personalizzato. Ho fatto in modo che il dialog si apra solo la prima volta utilizzando una variabile statica, non so se è da cioccolataio ma al momento non mi veniva in mente altro
codice:public class MainActivity extends AppCompatActivity { private static boolean firstTime = true; private TextView welcoming = null; private String welcomingString = null; @Override 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.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() { @Override 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() { @Override public void onClick(View view) { welcoming.setText("Welcome, this is my application!"); welcoming.setTextSize(20); d.cancel(); } } ); firstTime = false; }
Dopodichè i due metodi:
codice:@Override public void onSaveInstanceState (Bundle state) { super.onSaveInstanceState(state); state.putString("WelcomingText", welcomingString); } @Override public void onRestoreInstanceState (Bundle state) { super.onRestoreInstanceState(state); welcoming.setText(state.getString("WelcomingText")); }
Ho pensato anche io che onRestore non venisse chiamato per quel motivo, ma ho anche letto sulla documentazione che il Bundle che riceve l'onCreate è lo stesso su cui salvo le cose nell'onSave, quindi ho provato a recuperare la stringa dall'onCreate ma il bundle risulta sempre null.

Rispondi quotando