Подтвердить что ты не робот

Как я могу указать свой пользовательский FragmentPagerAdapter, чтобы остановить уничтожение моих фрагментов?

У меня есть ViewPager с FragmentPagerAdapter, и мое приложение ранее использовало только два фрагмента (разные типы) без проблем.

Я добавил третий фрагмент, но теперь мой адаптер /viewpager, кажется, уничтожает мои фрагменты, когда я удаляюсь от них. Например, если я на странице 1, страница 3 уничтожается и воссоздается, когда я приближаюсь к ней. Если я на странице 3, то это происходит и со страницей 1.

Это вызывает множество проблем в моем приложении. Фрагменты не очень тяжелые RAM, поэтому как я могу остановить это?

4b9b3361

Ответ 1

Я считаю, что вы ищете ViewPager.setOffscreenPageLimit().

В вашем случае следующее должно содержать ваши фрагменты в памяти и не уничтожать их.

ViewPager pager = (ViewPager) findViewById(R.id.viewPager);
pager.setOffscreenPageLimit(2);

Однако я подозреваю, что вы неправильно сохраняете свое состояние просмотра при его уничтожении. Ваши фрагменты должны правильно обрабатывать уничтожение/воссоздание. Например, ваши фрагменты также будут уничтожены и воссозданы, если произойдет изменение ориентации. Это также может произойти, если пользователь покидает ваше приложение, а система позже нуждается в памяти и уничтожает вашу активность. Он должен иметь возможность снова открываться и находиться в том же состоянии, что и раньше. Если это действительно проблема для вас, подумайте об экономии состояния в onSaveInstanceState(). Сохраненное состояние будет представлено вам в onCreate, где вы можете инициализировать состояние фрагмента так же, как и уничтоженное.

Ответ 2

просто переопределите этот метод в FragmentpagerAdapter

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
       // TODO Auto-generated method stub
       super.destroyItem(ViewGroup container, int position, Object object);
}

удалить super.destroyItem(ViewGroup container, int position, Object object);

из вашего кода