Как я могу остановить регенерацию фрагмента активности на складном телефоне?

Я изо всех сил пытаюсь остановить регенерацию фрагмента, когда складываю складной телефон.
Это экземпляр фрагмента, генерирующего код.

      class ExampleActivity: AppCompatActivity() {
  private var mapFragment: MapFragment? = null
  ...
  override fun onCreate(savedInstanceState: Bundle?) {
      super.onCreate(savedInstanceState)
      setContentView(R.layout.activity_example)
      mapFragment = supportFragmentManager.findFragmentById(R.id.exampleFragmentId) as MapFragment?
           ?: MapFragment.newInstance().also {
                 supportFragmentManager.commit {
                      add(R.id.exampleFragmentId, it)
                 }
              }
  }
   ...

}

Когда я складываю телефон, активность переходит в onCreate и рисую этот фрагмент заново.
Кто-нибудь знает, почему эта логика снова рисует фрагмент каждый раз, когда я складываю складной телефон?
Или вы, ребята, можете мне ответить, как решить эту проблему?

1 ответ

Система Android делает все возможное, чтобы правильно обработать изменение конфигурации.

  • Снести весь интерфейс и восстановить его. Вы можете ограничить воссоздание активности при изменении конфигурации, но это не рекомендуется.

В системе View отключение воссоздания активности может значительно затруднить использование альтернативных ресурсов. Это потому, что система больше не применяет их за вас. В приложениях, созданных с помощью системы View, отключайте воссоздание активности только в крайнем случае, когда необходимо избежать перезапуска из-за изменения конфигурации. Не рекомендуется для большинства приложений.

ссылка

Google рекомендует вам правильно сохранить свое состояние и восстановить его при изменении конфигурации.

но в любом случае, если вы хотите предотвратить воссоздание, заполните манифест, как показано ниже.

      <activity
    android:name=".ExampleActivity"
    android:configChanges="smallestScreenSize|screenSize|screenLayout"
>

ссылка

Другие вопросы по тегам