Добрый день.
Еще не сталкивался с работой фрагмента в фрагменте, подскажите как правильно восстанавливать их состояние?
Есть активити Activity
В нее устанавливается фрагмент FragmentA.
В FragmentA устанавливается FragmentB.
В коде это выглядит примерно так:
// активити
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(R.layout.activity, savedInstanceState);
Fragment fragment = FragmentA.newInstance(....);
setFragment(R.id.container, fragment); // установка с помощью FragmentManager
}
// FragmentA
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View layout = createView(R.layout.fragment_a, inflater);
Fragment fragment = FragmentB.newInstance(...);
setFragment(R.id.container_sub, fragment);
return layout;
}
// в FragmentB ничего какого-то интересного кода нет
Проблема - при пересоздании активити пересоздаются фрагменты (теряется состояние), а нужно чтоб они восстанавливались.
С активит выход такой - обернуть создание фрагмента в проверку на savedInstanceState:
// активити
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(R.layout.activity, savedInstanceState);
if (savedInstanceState == null) {
Fragment fragment = FragmentA.newInstance(....);
setFragment(R.id.container, fragment);
}
}
Корректно ли для восстановления фрагмента во фрагменте сделать то же самое, то есть в FragmentA сделать что то типа
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View layout = createView(R.layout.fragment_a, inflater);
if (savedInstanceState == null) {
Fragment fragment = FragmentB.newInstance(...);
setFragment(R.id.container_sub, fragment);
}
return layout;
}
На первый взгляд вроде работает как надо, но правильно ли так делать?
Может подскажете хорошую статью или книгу где подробно описано как работает все эти фрагменты и FragmentManager - везде где я видел это описано как-то поверхностно....