4

Je construis mon application Android et je souhaite maintenant ajouter des mises en page pour différentes orientations. J'ai créé un dossier layout-land et mis une mise en page différente pour ma première activité de démarrage "myStartActivity" (avec le même nom que la mise en page que j'avais utilisée auparavant pour les deux orientations). En fonction de mon orientation de l'écran AVANT de démarrer l'application, la bonne mise en page est choisie: "myLayout.xml" dans le dossier "layout" quand je démarre en portrait et le "myLayout.xml" dans la "mise en page" -land "-folder quand je commence dans le paysage. Le problème est que, lorsque je fais tourner l'appareil quand je suis déjà dans l'activité, après la rotation, je ne reçois pas la nouvelle mise en page. Par exemple: si vous passez du mode portrait au mode paysage, il affiche toujours "myLayout.xml" dans le dossier "layout" et non dans le dossier "layout-land" comme il se doit.Android: La rotation de l'écran dans l'activité ne passe pas en mode portrait/paysage

Je n'ai pas écrasé les méthodes OnConfigurationChange ou quoi que ce soit. Tout ce que je fais dans "myStartActivity" est d'instancier quelques boutons et de leur donner des écouteurs. Je veux utiliser une disposition différente dans le paysage pour changer l'ordre des boutons.

Répondre

0

Ce que vous pouvez faire est d'utiliser Activity.getResources().getConfiguration().orientation

Ensuite, en fonction du résultat d'orientation, définir l'affichage de contenu dans votre méthode OnCreate() qui est appelée la rotation.

protected void onCreate(Bundle savedInstanceState) { 
int result = this.getResources().getConfiguration().orientation; 
if (result == 1){ 
//set content view to portrait 
setContentView(R.layout.portrait); 
} 
else{ 
//set content view to landscape} 
setContentView(R.layout.landscape); 
} 

ou le bâton dans une instruction case :)

3

Dans mon cas, le problème décrit ne se produit que lorsque j'ai android: configChanges = « orientation » dans l'activité dans le manifeste.

Sinon, la disposition correcte est automatiquement utilisée lors de la rotation.

0

Si vous testez uniquement sur l'émulateur, il peut y avoir des problèmes de détection de changement d'orientation. J'ai vécu cela au moins.

Questions connexes