android - Comment puis-je sauver un état d'activité en utilisant l'état de l'instance de sauvegarde

Mots clés : androidandroid-activityapplication-stateandroid

meilleur 3 Réponses android - Comment puis-je sauver un état d'activité en utilisant l'état de l'instance de sauvegarde

vote vote

92

@Override public void onSaveInstanceState(Bundle savedInstanceState) {   super.onSaveInstanceState(savedInstanceState);   // Save UI state changes to the savedInstanceState.   // This bundle will be passed to onCreate if the process is   // killed and restarted.   savedInstanceState.putBoolean("MyBoolean", true);   savedInstanceState.putDouble("myDouble", 1.9);   savedInstanceState.putInt("MyInt", 1);   savedInstanceState.putString("MyString", "Welcome back to Android");   // etc. } 
@Override public void onRestoreInstanceState(Bundle savedInstanceState) {   super.onRestoreInstanceState(savedInstanceState);   // Restore UI state from the savedInstanceState.   // This bundle has also been passed to onCreate.   boolean myBoolean = savedInstanceState.getBoolean("MyBoolean");   double myDouble = savedInstanceState.getDouble("myDouble");   int myInt = savedInstanceState.getInt("MyInt");   String myString = savedInstanceState.getString("MyString"); } 
@Override public void onViewStateRestored(@Nullable Bundle savedInstanceState) {     super.onViewStateRestored(savedInstanceState);     // Restore UI state from the savedInstanceState.     // This bundle has also been passed to onCreate.     boolean myBoolean = savedInstanceState.getBoolean("MyBoolean");     double myDouble = savedInstanceState.getDouble("myDouble");     int myInt = savedInstanceState.getInt("MyInt");     String myString = savedInstanceState.getString("MyString"); } 
vote vote

80

[Code sample – Store state in state bundle] @Override public void onSaveInstanceState(Bundle savedInstanceState) {   // Store UI state to the savedInstanceState.   // This bundle will be passed to onCreate on next call.  EditText txtName = (EditText)findViewById(R.id.txtName);   String strName = txtName.getText().toString();    EditText txtEmail = (EditText)findViewById(R.id.txtEmail);   String strEmail = txtEmail.getText().toString();    CheckBox chkTandC = (CheckBox)findViewById(R.id.chkTandC);   boolean blnTandC = chkTandC.isChecked();    savedInstanceState.putString(“Name”, strName);   savedInstanceState.putString(“Email”, strEmail);   savedInstanceState.putBoolean(“TandC”, blnTandC);    super.onSaveInstanceState(savedInstanceState); } 
[Code sample – store state in SharedPreferences] @Override protected void onPause() {   super.onPause();    // Store values between instances here   SharedPreferences preferences = getPreferences(MODE_PRIVATE);   SharedPreferences.Editor editor = preferences.edit();  // Put the values from the UI   EditText txtName = (EditText)findViewById(R.id.txtName);   String strName = txtName.getText().toString();    EditText txtEmail = (EditText)findViewById(R.id.txtEmail);   String strEmail = txtEmail.getText().toString();    CheckBox chkTandC = (CheckBox)findViewById(R.id.chkTandC);   boolean blnTandC = chkTandC.isChecked();    editor.putString(“Name”, strName); // value to store   editor.putString(“Email”, strEmail); // value to store   editor.putBoolean(“TandC”, blnTandC); // value to store   // Commit to storage   editor.commit(); } 
[Code sample – store object instance] private cMyClassType moInstanceOfAClass; // Store the instance of an object @Override public Object onRetainNonConfigurationInstance() {   if (moInstanceOfAClass != null) // Check that the object exists       return(moInstanceOfAClass);   return super.onRetainNonConfigurationInstance(); } 
vote vote

76

if (!isTaskRoot()) {     Intent intent = getIntent();     String action = intent.getAction();     if (intent.hasCategory(Intent.CATEGORY_LAUNCHER) && action != null && action.equals(Intent.ACTION_MAIN)) {         finish();         return;     } } 

Questions similaires