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é reprend. Je ne veux pas que ça.

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

48
demandé sur Michael Petrotta 2010-12-31 09:33:31

11 réponses

il y a plusieurs façons de le faire, mais comme indiqué ici , en utilisant

android:configChanges="keyboardHidden|orientation|screenSize"

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

C'est comme ça que je l'ai fait, mais je serais intéressé de connaître les pensées des autres.

74
répondu Mike 2017-05-23 12:18:25

définit votre activité dans L'AndroidManifest.xml comme ceci:

   <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>
13
répondu Vikas 2014-09-09 20:00:42

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

11
répondu ninjasense 2012-12-08 05:59:26

je recommande L'utilisation de Fragments. Vous pouvez simplement utiliser setRetainInstance(true) pour notifier que vous voulez garder votre fragment.

7
répondu Grimmace 2012-12-08 05:38:56

ajouter android:configChanges="keyboardHidden|orientation" à votre activity

7
répondu Avadhani Y 2013-02-08 11:28:16

pour les utilisateurs de xamarin,

pour éviter le redémarrage de l'application sur le changement d'orientation dans Android, ajouter

ConfigurationChanges = Android.Content.PM.ConfigChanges.Orientation | Android.Content.PM.ConfigChanges.ScreenSize à l'attribut D'activité de toutes les classes d'activité. Par exemple, ci-dessous est mon code de démo

    [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
répondu Tushar patel 2016-11-29 09:43:24

j'ai essayé d'écrire android:configChanges="keyboardHidden|orientation|screenSize" dans l'étiquette d'activité mais pas dans les travaux.

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

5
répondu Oubaida AlQuraan 2018-04-29 01:06:00

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
répondu Mohsen mokhtari 2017-03-18 08:07:02

pour éviter de redémarrer sur keyboardHidden|orientation - comment désactiver le changement d'orientation dans Android?

s'il vous Plaît suivez l'API Android "guide de 151960920" Manipulation d'Exécution les Modifications

à l'Aide de l'Application de la Classe Activité de redémarrer sur de rotation Android

2
répondu Rupesh Yadav 2017-05-23 12:26:35

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

0
répondu Charpman 2017-05-08 15:10:14

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 attention , Développeurs Android Documentation dit que vous devez le faire que si il n'y a pas de meilleure options de gauche.

Note: l'utilisation de cet attribut doit être évitée et n'être utilisée qu'en dernier Resort. S'il vous plaît lire manipulation des changements D'exécution pour plus d'informations comment gérer correctement un redémarrage 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 la méthode onConfigurationChanged () .

0
répondu Soon Santos 2018-07-17 12:17:00