2013-11-08 3 views
2

У меня есть android.support.v4.app.FragmentStatePagerAdapter, в котором размещается около 1-10 фрагментов, изменяющихся в зависимости от ситуации. Каждый фрагмент имеет GridView, определенный в его представлении.FragmentPagerAdapter удаление фрагментов на приложении резюме

enter image description here

Если пользователь помещает приложение в фоновом режиме, запускает другое приложение, и возвращается в мое приложение. На некоторых устройствах фрагменты просто удаляются, а приложение выводит пустой пустой экран. Я попытался перейти на FragmentPagerAdapter, но в результате произошел сбой. Он выбрасывает java.lang.IllegalStateException: Activity has been destroyed error.

Я не могу понять путаницу вокруг системы, поскольку фрагменты содержатся внутри действия, только созданная деятельность может делегировать вызов уведомляющих фрагментов.

Update 1:

С отладки это дальше, приложение, кажется, бросить IllegalStateException

когда в FragmentPagerAdapater:

java.lang.IllegalStateException: активность была уничтожена на android.support. v4.app.FragmentManagerImpl.enqueueAction (SourceFile: 1358) на android.support.v4.app.BackStackRecord.commitInternal (SourceFile: 595) на android.support.v4.app.BackStackRecord.commitAllowing StateLoss (SourceFile: 578) на android.support.v4.app.FragmentPagerAdapter.finishUpdate (ИСХ: 139) на android.support.v4.view.ViewPager.setAdapter (SourceFile: 415)

Когда в FragmentStatePagerAdapter

не

java.lang.IllegalStateException: Fragement больше не существует для ключа f1: индекс 1 на android.support.v4.app.FragmentManagerImpl.getFragment (ИСХ: 564) в android.support.v4.app.FragmentStatePagerAdapter.getItem (SourceFile: 211) restoreState at android.support.v4.view.ViewPager.setAdapter (SourceFile: 428)

Любая помощь очень ценится.

+0

Каков ваш текущий код для добавления этих фрагментов? – Szymon

ответ

0

Я догадываюсь, что опаздываю, но похоже, что если вы используете FragmentPagerAdapter, он не воссоздается после того, как действие уничтожено, и оно пытается ссылаться на старый уничтоженный экземпляр действия. Это возможно, например, если вы объявите этот адаптер как static. Попытайтесь изменить свой код таким образом, чтобы адаптер всегда воссоздавался при каждом создании активности.