Désolé pour mon incompréhension, mais je suis nouveau dans le développement Android.
J'ai une application avec l'activité A et l'activité B, et je passe de l'activité A à l'activité B. Lorsque j'ai quitté l'activité A, la méthode onSaveInstanceState
a été appelée, mais quand je suis retournée à l'activité A (de activité B dans la même application), le bundle de la méthode onCreate
était nul.
Que puis-je faire pour sauvegarder l'état précédent de l'activité A? Je souhaite uniquement stocker les données pour la durée de vie de l'application.
Quelqu'un peut il m'aider avec ça?
Voici mon code pour l'activité A:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState != null)
{
Log.v("Main", savedInstanceState.getString("test"));
}
else
{
Log.v("Main", "old instance");
}
}
@Override
public void onSaveInstanceState(Bundle savedInstanceState)
{
Log.v("Main", "save instance");
savedInstanceState.putString("test", "my test string");
super.onSaveInstanceState(savedInstanceState);
}
public void buttonClick(View view)
{
Intent intent = new Intent(this, Activity2.class);
startActivity(intent);
}
Voici mon code pour l'activité B, lorsque j'appuie sur un bouton pour revenir à l'activité A:
public void onBack(View view)
{
NavUtils.navigateUpFromSameTask(this);
}
L'enregistrement et la restauration de l'état visent à enregistrer les données temporaires actuelles qui sont obsolètes lorsque l'utilisateur quitte l'application. Lorsque vous réduisez ou quittez l'activité en ouvrant la suivante, elle peut être détruite par le système par manque de ressources et redémarrée avec savedInstanceState
lorsque vous y revenez. N'utilisez donc onSaveInstanceState()
que pour enregistrer les données de session de minimisation-restauration.
Donc, si vous commencez une nouvelle activité devant et revenez à la précédente (ce que vous essayez de faire), l'activité A peut ne pas être tuée (juste arrêtée) et redémarrée sans être détruite. Vous pouvez forcer sa suppression et sa restauration en cochant Don't keep activities
Dans le menu des options du développeur.
Si vous appelez finish()
ou supprimez le Activity
de la liste des tâches récentes, le savedInstanceState
ne sera pas transmis à onCreate()
puisque la tâche a été effacée.
Si la valeur doit être persistante, envisagez d'utiliser SharedPreferences.
Pour répondre à votre question, consultez le Android doc: https://developer.Android.com/reference/Android/app/Activity.html#onRestoreInstanceState (Android. os.Bundle)
Il indique que onRestoreInstanceState est appelé après la méthode onStart () dans le cycle de vie de l'activité.
Cela se produit parce que vous naviguez à la dure. Si vous utilisiez la navigation par défaut du bouton retour du téléphone, votre onCreate
ferait passer l'ensemble.
Pour contourner ce problème, je vous suggère de sauvegarder votre état dans les préférences partagées ainsi qu'une sauvegarde. Lorsque l'ensemble est nul, restaurez-le à partir des préférences partagées.
Après onStart () qui est après onCreate ()
J'ai utilisé dans ce cas un indicateur et SharedPreferences. Cela devrait fonctionner et lorsque vous modifiez l'orientation de l'écran.