Как я могу остановить регенерацию фрагмента активности на складном телефоне?
Я изо всех сил пытаюсь остановить регенерацию фрагмента, когда складываю складной телефон.
Это экземпляр фрагмента, генерирующего код.
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"
>