Извините, что я не добавил код, но я действительно не знал, какая часть могла сделать это.Но я наконец выяснил, в чем причина.
В методе родительской активности onCreate я создал фрагмент, вызвав
if(mFragment == null)
{
mFragment = onCreatePane();
getSupportFragmentManager()
.beginTransaction()
.add(R.id.root_container,mFragment)
.commit();
}
Я подумал, что теста для null
достаточно,но содержимое фрагмента остается в FrameLayout либо после вызова onDestroy в Activity (путем вращения устройства).Это странно, не правда ли?
Я пытался установить этот код на onStop()
if(mFragment != null)
{
getSupportFragmentManager()
.beginTransaction()
.remove(mFragment)
.commit();
}
, но результат был тот же.Единственное решение, которое я нашел, это заменить метод add()
методом replace()
.Но кто-нибудь знает, почему удаление фрагмента не помогло?И почему содержимое фрагмента остается в FrameLayout после уничтожения Activity?
Еще раз спасибо.
EDIT:
Теперь я знаю, в чем была проблема.Я должен проверить savedStateInstance == null
вместо mFragment == null
.Если я этого не сделаю, основное действие восстановит старый фрагмент из сохраненного состояния, а также создаст новый фрагмент в моем методе onCreate.