Скажем, мы используем один или несколько Activity
с несколькими Fragment
с, добавьте их к BackStack
. Например,
fragmentManager?.beginTransaction()
?.replace(R.id.container, fragment, TAG)
?.addToBackStack(null)
?.commit()
После добавления 3-5 фрагментов мы пытаемся вернуться обратно. Сохраняют ли эти фрагменты свои состояния и восстанавливают (с воссозданием)? Или они хранятся в памяти, так что после добавления 100 фрагментов мы получим OOM
исключение?
Меня интересует эта проблема, потому что используется Kotlin Android extensions
. Когда я выключаю экран, вызывается onStop()
, заставляющий фрагменты в BackStack
вызывать событие onSaveInstanceState()
. В этом случае, если я использую
override fun onSaveInstanceState(outState: Bundle) {
outState.putString(ARG_NAME, editText.text.toString())
super.onSaveInstanceState(outState)
}
Я получу исключение NPE
для editText.text
, потому что editText
равно null
для основных фрагментов. Может быть, я не прав, может быть, это проблема расширений Kotlin для Android.