Слабые ссылки на фрагменты при изменении ориентации с использованием FragmentStatePagerAdapter -Android
Я отслеживаю фрагменты в фрагментах состояния страницы, используя слабые ссылки на фрагменты. Я нашел это дешевле, чем сделать вектор, чтобы отслеживать фактические фрагменты. Итак, я мог бы, например, вызвать функцию getFragmentt(2), и она провела бы поиск по моему списку слабых ссылок на фрагмент, и, если он жив, вернет реальный объект. Пока все хорошо. Теперь, если я поворачиваю устройство, FraggerManager воссоздает фрагменты, но в результате все слабые ссылки теряются. Адаптер даже не вызывается, когда фрагменты восстанавливаются при изменении ориентации. Вот код
public class SectionsPagerAdapter extends FragmentStatePagerAdapter{
ArrayList<WeakReference<Fragment>> m_fragments;
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
m_fragments=new ArrayList<WeakReference<Fragment>>();
}
@Override
public Fragment getItem(int position) {
// getItem is called to instantiate the fragment for the given page.
// Return a listFragment ) with the page number as one of its argument.
TweetsListFragment mListfragment = TweetsListFragment.newInstance(
position, nf, mpageTitles[position]);
m_fragments.add(position, new WeakReference<Fragment>(mListfragment));
return mListfragment;
}
@Override
public int getItemPosition(Object object) {
printLog(Consts.TAG, "getting item position from pageview adapter");
return PagerAdapter.POSITION_NONE;
}
@Override
public int getCount() {
return mpageTitles.length;
}
@Override
public CharSequence getPageTitle(int position) {
return mpageTitles[position];
}
/*return actual object from weak store of fragments on request*/
public Fragment getFragment(final int position) {
return m_fragments.get(position) == null ? null :
m_fragments.get(position).get();
}
......... etc