Sobes.tech
Middle

È possibile fare in modo che l'attività non venga ricreata durante la rotazione dello schermo?

sobes.tech AI

Risposta dell'AI

Sì, è possibile. Ci sono due metodi principali.

  1. Dichiarare configChanges nel manifesto: In AndroidManifest.xml, per <activity>, aggiungere l'attributo android:configChanges="orientation|screenSize".

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

    In questo caso, l'attività non viene ricreata, ma viene chiamato il metodo onConfigurationChanged(), che deve essere sovrascritto per gestire i cambiamenti di configurazione.

    override fun onConfigurationChanged(newConfig: Configuration) {
        super.onConfigurationChanged(newConfig)
        // Gestire i cambiamenti, ad esempio:
        // if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
        //     // Cambio in modalità landscape
        // } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
        //     // Cambio in modalità portrait
        // }
    }
    
  2. Fissare l'orientamento dello schermo: È possibile impostare un'orientamento fisso per l'attività, aggiungendo l'attributo android:screenOrientation nel manifesto.

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

    o

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

    In questo caso, l'orientamento dell'attività non cambierà indipendentemente dalla rotazione del dispositivo, e non verrà ricreata.