2014-07-08 4 views
1

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:

enter image description here

Vérifié:

enter image description here

Passer au paysage:

enter image description here

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é?

Répondre

2

désactiver la restauration de l'état de l'instance appliquant à cette case

add android: saveEnabled = "false" à votre case xml

+0

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

0

également adapté à ma situation avec le commutateur