La raison pour laquelle votre case n'est pas cochée sur Orientation Change
est qu'Android déclenche des méthodes d'activité sur Orientation Change
comme suit :
onPause -> onSave -> onStop -> onCreate -> onStart -> onResume
Si vous voulez sw.setChecked(false);
à déclencher lors du changement d'orientation, placez-la dans la fonction onResume() de vos activités comme suit :
//Other Code Above, i.e. onCreate();
@Override
public void onResume(){
super.onResume();
// Put your code here...
sw.setChecked(false);
}
Il existe également d'autres options pour empêcher le redémarrage de l'activité. Documentation Android sous Modifications de la configuration
Dans certains cas particuliers, il peut être souhaitable de ne pas tenir compte des éléments suivants en fonction d'un ou de plusieurs types de changements de configuration. C'est ce que avec l'attribut Android:configChanges dans son manifeste. Pour tous les types de changements de configuration que vous dites gérer ici, vous pourrez recevrez un appel à la fonction onConfigurationChanged(Configuration) de votre activité actuelle au lieu d'être redémarrée. Si un changement de configuration implique un type de changement que vous ne gérez pas, l'appel à la méthode vous ne gérez pas, l'activité sera quand même redémarrée et la méthode onConfigurationChanged(Configuration) ne sera pas appelée. redémarré.
Et enfin une autre option via onSaveInstanceState(Bundle savedInstanceState)
y onRestoreInstanceState(Bundle savedInstanceState)
:
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
savedInstanceState.putBoolean("YourCheckBox", enable);
super.onSaveInstanceState(savedInstanceState);
}
Et le récupérer en utilisant cette méthode :
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
boolean mychkbox = savedInstanceState.getBoolean("YourCheckBox");
}