Sobes.tech
Middle

Czy można sprawić, aby aktywność nie była ponownie tworzona podczas obracania ekranu?

sobes.tech AI

Odpowiedź od AI

Tak, jest to możliwe. Istnieją dwa główne sposoby.

  1. Zadeklaruj configChanges w manifeście: W AndroidManifest.xml, dla <activity>, dodaj atrybut android:configChanges="orientation|screenSize".

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

    W tym przypadku aktywność nie jest ponownie tworzona, a wywoływana jest metoda onConfigurationChanged(), którą należy nadpisać, aby obsługiwać zmiany konfiguracji.

    override fun onConfigurationChanged(newConfig: Configuration) {
        super.onConfigurationChanged(newConfig)
        // Obsługa zmian, na przykład:
        // if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
        //     // Zmieniono na tryb poziomy
        // } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
        //     // Zmieniono na tryb pionowy
        // }
    }
    
  2. Ustawić stałą orientację ekranu: Można ustawić stałą orientację dla aktywności, dodając atrybut android:screenOrientation w manifeście.

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

    lub

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

    W tym przypadku orientacja aktywności nie będzie się zmieniać niezależnie od obrotu urządzenia, a aktywność nie zostanie ponownie utworzona.