При использовании FragmentActivity
он автоматически восстанавливает состояние фрагмента и воссоздает все фрагменты.
Я знаю, что это делается в основном с сохранением состояния в onSaveInstanceState
, а затем восстановлено в действии onCreate
. Немного о коде, который я видел, что все фрагменты воссозданы (или только прикреплены, если preserveInstance истинно) и добавлены в FragmentManager
, но мне не ясно, каким образом они добавляются в представление, потому что view isn Автоматически восстанавливается.
Мои первоначальные проблемы заключались в том, что я получаю дубликаты некоторых фрагментов, похожих на на другой вопрос.
Я работал в onCreate
с помощью
Fragment f = fm.findFragmentByTag(tagName);
if(f==null) {
f = createFragment();
fm.beginTransaction().add(R.id.myContainer,f,tagName).commit();
} else {
//Nothing it on the view
}
Теперь он работает, но я до сих пор не понимаю, как это работает.
Мои сомнения:
- В какой момент и как фрагменты привязаны к представлению? Я экспериментировал, что восстановление фрагмента выполняется в
onCreate
FragmentActivity
. Но если после этого я назовёмsetContentView
, как фрагмент присоединяется к представлению? - Можно ли предотвратить восстановление фрагментов без перезаписывания
onSaveInstanceState
? Поскольку из-за разных макетов ориентации с разным количеством фрагментов мое первоначальное намерение состояло в том, чтобы воссоздать только один фрагмент состояния, отмеченный как сохраненный, не восстанавливать другие фрагменты представления, которые не отмечены как сохраненные.