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?

Était-ce utile?

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>

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top