web-dev-qa-db-fra.com

Comment éviter de redémarrer l'activité lorsque l'orientation change sur Android

Je crée une application Android dans laquelle je dessine une vue sur une toile. Lorsque l'orientation de l'appareil change, l'activité redémarre. Je ne le veux pas.

Comment puis-je éviter de redémarrer l'activité lorsque l'orientation change?

51
chirag

Il y a différentes façons de le faire, mais comme donné ici , en utilisant

Android:configChanges="keyboardHidden|orientation|screenSize"

selon vos besoins, vous permet d'écouter les changements de configuration. Vous répondez ensuite à ces modifications en remplaçant onConfigurationChanged et en appelant setContentView.

C'est ce que je faisais, mais je serais intéressé de connaître les pensées des autres.

78
Mike

Définissez votre activité dans le fichier AndroidManifest.xml comme suit:

   <activity
        Android:name="com.name.SampleActivity"
        Android:configChanges="keyboardHidden|orientation|screenSize"
        Android:icon="@drawable/sample_icon"
        Android:label="@string/sample_title"
        Android:screenOrientation="portrait" >
    </activity>
15
Vikas

Vérifiez dans votre fichier de manifeste Android que vous avez écrit Android:configChanges="orientation" sur l'activité.

11
ninjasense

Je recommanderais d'utiliser des fragments. Vous pouvez simplement utiliser setRetainInstance(true) pour indiquer que vous souhaitez conserver votre fragment.

7
Grimmace

Ajoutez Android:configChanges="keyboardHidden|orientation" à votre activity

7
Avadhani Y

Pour les utilisateurs de xamarin,

Pour éviter le redémarrage de l'application lors du changement d'orientation dans Android, ajoutez
ConfigurationChanges = Android.Content.PM.ConfigChanges.Orientation | Android.Content.PM.ConfigChanges.ScreenSize à l'attribut d'activité de toutes les classes d'activité . Par exemple, voici mon code de démonstration

    [Activity(Label = "DemoApp", ConfigurationChanges = Android.Content.PM.ConfigChanges.Orientation | Android.Content.PM.ConfigChanges.ScreenSize)]
    public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsApplicationActivity
    {
        protected override void OnCreate(Bundle bundle)
        {
        //Some code here
        }
    }
6
Tushar patel

J'ai essayé d'écrire Android:configChanges="keyboardHidden|orientation|screenSize" dans la balise d'activité mais cela ne fonctionne pas.

J'ai essayé beaucoup de méthodes mais rien ne fonctionne jusqu'à ce que j'ai ajouté Android:configChanges="keyboardHidden|orientation|screenSize" à toutes les activités de l'application et cela fonctionne parfaitement.

6
Oubaida AlQuraan

Ajoutez ceci à toutes vos activités dans le manifeste.

Android:configChanges="orientation|screenSize"

Exemple:

<activity Android:name=".activity.ViewActivity"
        Android:label="@string/app_name"
        Android:configChanges="orientation|screenSize"/>
3
Mohsen mokhtari

POUR éviter de redémarrer sur keyboardHidden|orientation - Comment désactiver le changement d’orientation sous Android?
Veuillez suivre le guide API Android - Gestion des modifications d'exécution
Utilisation de la classe d'applications - Redémarrage d'activité sur rotation Android

2
Rupesh Yadav

il suffit d'ajouter Android: configChanges = "keyboardHidden | orientation | screenSize" pour toutes les activités de l'application dans le fichier manifeste

0
Charpman

Déclarez ceci dans votre AndroidManifest.xml

<activity Android:name=".complex_examples.VideoPlayerActivity"
            Android:configChanges="keyboard|keyboardHidden|orientation
                                  |screenSize|screenLayout|smallestScreenSize|uiMode"
            Android:launchMode="singleTop"/>

Mais faites attention, Documentation Android indique que vous ne devez le faire que s’il n’ya pas de meilleures options.

Remarque: L'utilisation de cet attribut doit être évitée et utilisée uniquement en dernier recours. Veuillez lire Gestion des modifications d'exécution pour plus d'informations sur la façon de gérer correctement un redémarrage en raison d’un changement de configuration.

Si vous êtes sûr de le faire, vous pouvez gérer vous-même les changements de configuration dans onConfigurationChanged () method.

0
Soon Santos