Comment est l'orientation de l'application (portrait ou paysage) verrouillé?
-
27-09-2019 - |
Question
J'ai essayé d'orientation gel en utilisant:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
Bien que les séjours d'affichage en orientation portrait, l'activité est toujours recréée. Toute idée comment résoudre ce problème?
Comment l'orientation de l'application peut être verrouillé de telle sorte que l'activité ne soit pas recréée sur le changement d'orientation?
La solution
Tout d'abord, ne pas utiliser setRequestedOrientation()
si vous pouvez l'éviter. Utilisez l'attribut android:screenOrientation
dans votre élément <activity>
manifeste à la place.
En second lieu, vous aurez également besoin android:configChanges="keyboardHidden|orientation"
dans votre élément <activity>
manifeste pour empêcher le détruire / cycle de Recréer.
Autres conseils
Un exemple plus spécifique de la section de l'activité de la AndroidManifest.xml pour une orientation portrait:
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:configChanges="keyboardHidden|orientation|screenSize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Où android:screenOrientation
définit l'orientation initiale et android:configChanges
annule les événements qui déclenche les méthodes de cycle de vie correspondantes sur l'écran change.
Essayez ceci:
1.- Réglez l'orientation de l'écran souhaité dans votre AndroidManifest.xml
android:screenOrientation="portrait|landscape"
Il devrait ressembler à ceci:
<application
android:allowBackup="true"
android:icon="~icon path~"
android:label="~name~"
android:supportsRtl="true"
android:screenOrientation="portrait"
android:theme="@style/AppTheme">
</application>
2.- Ajouter à votre vide onCreate (ou où vous voulez) dans votre fichier d'activité java (Exemple: "MainActivity.java"):
super.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);
Il devrait ressembler à ceci:
protected void onCreate(Bundle savedInstanceState) {
super.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);}
Maintenant, l'écran wont se déplacer, même si l'écran de rotation est dans l'appareil.
La meilleure solution est d'utiliser l'instance enregistrée. Si vous verrouillez l'orientation de l'écran, cela signifie que vous forcer l'utilisateur à utiliser l'application en fonction des contraintes définies par vous. Il faut donc toujours utiliser onSaveInstanceState. Lire ce lien: http://developer.android.com/training/basics /activity-lifecycle/recreating.html