Sobes.tech
Middle

Je možné zajistit, aby se aktivita při otáčení obrazovky znovu nevytvářela?

sobes.tech AI

Odpověď od AI

Ano, je to možné. Existují dva hlavní způsoby.

  1. Deklarace configChanges v manifestu: V AndroidManifest.xml, pro <activity>, přidejte atribut android:configChanges="orientation|screenSize".

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

    V tomto případě se aktivita nepřekreslí, místo toho je volána metoda onConfigurationChanged(), kterou je třeba přepsat pro správu změn konfigurace.

    override fun onConfigurationChanged(newConfig: Configuration) {
        super.onConfigurationChanged(newConfig)
        // Zpracování změn, například:
        // if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
        //     // Přepnutí na režim na šířku
        // } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
        //     // Přepnutí na režim na výšku
        // }
    }
    
  2. Zafixovat orientaci obrazovky: Je možné nastavit pevnou orientaci pro aktivitu, přidáním atributu android:screenOrientation do manifestu.

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

    nebo

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

    V tomto případě se orientace aktivity nezmění bez ohledu na otáčení zařízení, a aktivita se nebude znovu vytvářet.