Why isn't my fragments onSaveInstanceState() being called?

前端 未结 2 694
南方客
南方客 2021-01-01 23:05

I have a fragment which has its own state (selected buttons, etc). That state is lost on a screen rotation.

The activity that contains the fragment has a portrait la

2条回答
  •  夕颜
    夕颜 (楼主)
    2021-01-01 23:36

    If the fragment needs a different layout resource when rotated, setRetainInstance(true) cannot be used. This page shows the lifecycle of fragment with setRetainInstance(true).

    Original idea is use onSaveInstanceState() to retain all members data, just like a regular Activity. However, for some reason, onSaveInstanceState() is not get called. But FragmentActivity is correct, as @Eric Kok suggested). The best solution I found is to use Arguments of Fragment.

    See the solution by Fyodor Volchyok, it is simple. Just work as if the outState in onSaveInstanceState(), and savedInstanceState in onViewCreated().

提交回复
热议问题