Je voulais utiliser un checkBox pour modifier le message d'un textView. Lorsque le checkBox est coché, il affiche le texte "checked", sinon le texte "unchecked". J'ai utilisé un onClickListener, et tout semble fonctionner jusqu'à ... Je suis passé en mode paysage: si le checkBox était coché, le checkBox reste coché, alors qu'il devrait être décoché lorsque l'activité est recréée et sa valeur de départ est " faux". J'ai creusé un peu et j'ai vu que la valeur du checkBox était, comme prévu, "false".Strange CheckBox Behavior
Illustration avec le code:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final CheckBox checkBox = (CheckBox) findViewById(R.id.checkBox1);
final TextView textView = (TextView) findViewById(R.id.textView1);
//Code to check if checkbox is checked
if (checkBox.isChecked())
textView.setText("Checked");
checkBox.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (checkBox.isChecked()) {
textView.setText("Checked");
}else
textView.setText("Unchecked");
}
});
}
écran de démarrage:
Vérifié:
Passer au paysage:
L'activité est créée à nouveau, la valeur de checkBox est faux, mais il apparaît comme il est vérifié!
La question est alors:
pourquoi le show case à l'écran comme il est vérifié?
le faisceau de restoredInstanceState est généralement pas pensé à propos et remplace la récréation quand il s'agit de feuilles xml avec une priorité plus élevée alors votre travail backend, et est généralement le problème lors de l'exécution dans des problèmes tels que ceux-ci – CodeBlake