Ответ
Используйте setRetainInstance(true) в onCreate(), но это работает только для конфигурационных изменений (например, поворот экрана). Для более сложных сценариев лучше сохранять данные в ViewModel, которая переживает изменения конфигурации:
class MyFragment : Fragment() {
private lateinit var viewModel: MyViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
viewModel = ViewModelProvider(this).get(MyViewModel::class.java)
}
}
Для сохранения состояния между уничтожением и воссозданием фрагмента используйте onSaveInstanceState():
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
outState.putString("KEY", importantData)
}
И восстанавливайте в onViewCreated() или onCreate().