Sobes.tech
Middle

Est-il possible de faire en sorte que l'activité ne soit pas recréée lors de la rotation de l'écran?

sobes.tech IA

Réponse de l'IA

Oui, c'est possible. Il y a deux méthodes principales.

  1. Déclarer configChanges dans le manifeste : Dans AndroidManifest.xml, pour <activity>, ajouter l'attribut android:configChanges="orientation|screenSize".

    <activity
        android:name=".MainActivity"
        android:configChanges="orientation|screenSize" />
    

    Dans ce cas, l'activité n'est pas recréée, mais la méthode onConfigurationChanged() est appelée, et doit être redéfinie pour gérer les changements de configuration.

    override fun onConfigurationChanged(newConfig: Configuration) {
        super.onConfigurationChanged(newConfig)
        // Gérer les changements, par exemple :
        // if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
        //     // Passage en mode paysage
        // } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
        //     // Passage en mode portrait
        // }
    }
    
  2. Fixer l'orientation de l'écran : Il est possible de définir une orientation fixe pour l'activité en ajoutant l'attribut android:screenOrientation dans le manifeste.

    <activity
        android:name=".MainActivity"
        android:screenOrientation="portrait" />
    

    ou

    <activity  
        android:name=".MainActivity"  
        android:screenOrientation="landscape" />
    

    Dans ce cas, l'orientation de l'activité ne changera pas, peu importe la rotation de l'appareil, et l'activité ne sera pas recréée.