У меня есть одно мероприятие, ActivityA
и 3 фрагмента, FragmentA
, FragmentB
и FragmentC
.Фрагмент не отображается после поворота экрана
Чтобы добавить Fragmenta, я использую replace
, где fragment
является новым экземпляром FragmentA
:
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.frame_layout_fragment, fragment)
.commit();
В onCreate
методы ActivityA, я чек на FragmentA
создание:
if (savedInstanceState == null) {
FragmentA fragmentA = FragmentA.newInstance();
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.frame_layout_fragment, fragmentA)
.commit();
}
Чтобы добавить FragmentB
и FragmentC
, я использую add
и addToBackStack
, где fragment
является либо новым экземпляром из FragmentB
или FragmentC
:
getSupportFragmentManager()
.beginTransaction()
.add(R.id.frame_layout_fragment, fragment)
.addToBackStack(null)
.commit();
я нажимаю кнопку назад в то время как на FragmentC
, он показывает FragmentB
, и нажав на кнопку назад, а на FragmentB
показывает FragmentA
, как и ожидалось. Пока я был на FragmentC
, я вращаю устройство, и FragmentC
все еще показывает, как и ожидалось.
Однако, когда я перейти от FragmentC
к FragmentA
при помощи 2 нажатия на кнопку назад, затем повернуть устройство в два раза, портрет -> пейзаж -> портрет, добавить FragmentB
, добавить FragmentC
, то я повернуть устройство один раз, я Ожидается FragmentC
, чтобы показать, но вместо FragmentB
показывает. Когда я нажимаю кнопку назад один раз, ничего не происходит. Когда я снова нажимаю его, он возвращается обратно к FragmentA
. Кажется, что FragmentC
присутствует в задней стеке, но по какой-то причине его не видно.
Почему FragmentC
не отображается в этом сценарии?
Вращение устройства вызывает onCreateView для каждого фрагмента в моем случае. FragmentC не отображается, хотя вызывается onCreateView. – catsfw