Quelle est la manière correcte de gérer un changement d'orientation lors de l'utilisation de fragments ?
J'ai une mise en page de paysage qui contient 2 fragments (instanciés dans le code en FrameLayout
s). Lorsque je passe en mode portrait (dont la mise en page ne contient qu'un seul FrameLayout
qui ne contient que le volet de gauche), le fragment de droite n'est plus nécessaire.
Je reçois une erreur :
E/AndroidRuntime(4519): Caused by: java.lang.IllegalArgumentException: No view found for id 0x7f060085 for fragment myFragment{418a2200 #2 id=0x7f060085}
Je suppose que mon activité essaie de rattacher le fragment à l'endroit où il se trouvait avant le changement d'orientation, mais comme la vue qui contient le fragment n'existe pas en mode portrait, une erreur se produit.
J'ai essayé les méthodes suivantes de masquage/suppression/détachement mais j'obtiens toujours l'erreur. Quelle est la manière correcte de dire à un fragment qu'il n'est plus nécessaire et de ne pas essayer de l'afficher ?
@Override
public void onCreate(Bundle b) {
super.onCreate(b);
Fragment f = getSupportFragmentManager().findFragmentById(R.id.fragholder2);
//rightPane is a framelayout that holds my fragment.
if (rightPane == null && f != null) {
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.hide(f); // This doesnt work
ft.remove(f); // neither does this
ft.detach(f); // or this
ft.commit;
}
}