J'ai un code simple où je veux savoir quand onRestoreInstanceState est appelé pendant l'exécution du programme dans android?onRestoreInstanceState n'est pas appelé?
S'il vous plaît aidez-moi.
Merci d'avance.
Ma première activité est la suivante
public class AbcActivity extends Activity {
Button b1;
EditText ed1;
Bundle b = new Bundle();
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
Log.v("Tag", "inside oncreate");
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
b1 = (Button) findViewById(R.id.button1);
ed1 = (EditText) findViewById(R.id.editText1);
b1.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(getApplicationContext(),
SecondActivity.class);
startActivity(intent);
}
});
}
@Override
protected void onSaveInstanceState(Bundle outState) {
Log.v("Tag", "inside onsave instance state");
outState.putString("key", ed1.getText().toString());
super.onSaveInstanceState(outState);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
Log.v("Tag", "inside on restore instance state");
super.onRestoreInstanceState(savedInstanceState);
if (savedInstanceState != null) {
Log.v("tag", "inside if");
String str = savedInstanceState.getString("key");
ed1.setText("" + str);
}
}
}
mon deuxième code d'activité se présente comme suit
public class SecondActivity extends Activity {
Button back;
@Override
protected void onCreate(Bundle savedInstanceState) {
Log.v("Tag", "inside 2 oncreate");
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
back = (Button) findViewById(R.id.button1);
back.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(getApplicationContext(),
AbcActivity.class);
startActivity(intent);
}
});
}
@Override
protected void onSaveInstanceState(Bundle outState) {
Log.v("Tag", "inside 2 onsave instance state");
super.onSaveInstanceState(outState);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
Log.v("Tag", "inside 2 on restore instance state");
super.onRestoreInstanceState(savedInstanceState);
}
}
ai-je besoin d'appeler les méthodes finish() ou onStop() dans mon code? – Shri
Non, il n'est appelé qu'après une interruption de votre activité, par ex. après destruction en raison d'une condition de mémoire faible. Vous pouvez "émuler" en ouvrant l'activité que vous souhaitez tester, en appuyant sur le bouton Accueil, puis en supprimant le processus, par ex. via DDMS (cela enverra System.exit (1)) – Matthias
faites ce que Matthias a dit ou changez simplement d'orientation. @Matthias ce n'est pas le seul cas, il est également appelé après un changement de configuration. – futtetennista