J'ai une application Android avec une activité et un ViewPager personnalisé avec plusieurs fragments. Toute mon activité est verrouillée en portrait, mais maintenant je dois détecter, à l'intérieur d'un fragment spécifique, quand l'appareil est en paysage et lancer une autre activité verrouillée en paysage. Dans cette nouvelle activité, lorsque l'utilisateur met un appareil en mode portrait, je le ferme et retourne à l'activité portrait. Ce est AndroidManifest.xml code:Android: détecter le changement d'orientation de l'écran également si l'orientation est verrouillée
<activity
android:name="com.mypackage.MainActivity"
android:configChanges="orientation"
android:label="@string/app_name"
android:launchMode="singleTask"
android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.Light" >
</activity>
et ce code est à l'intérieur de fragment qui doit détecter le paysage:
public void onConfigurationChanged(Configuration myConfig) {
int orient = getResources().getConfiguration().orientation;
switch (orient) {
case Configuration.ORIENTATION_LANDSCAPE:
//Launch new activity
break;
}
}
Maintenant, je l'ai remarqué que onConfigurationChanges est jamais appelé avec cette configuration manifeste, mais est appelé seulement si je supprimer
android:screenOrientation="portrait"
Il y a une façon de garder MainActivity enfermé dans le portrait et le paysage interceptent aussi?
parce que j'ai un ViewPager dans mon activité conçu pour travailler uniquement en portrait, et parce que j'ai besoin pour passer en mode portrait uniquement si l'utilisateur est sur un fragment spécifique – giozh
alors il semble que vous ayez quelque chose de mal conçu en termes tels que ViewPager ne devrait être utilisé qu'en portrait. Mais il ne devrait pas avoir besoin d'être conscient de l'orientation car elle ne devrait pas être sa tâche –