Benderlidze
@Benderlidze

Как обновить FragmentStatePagerAdapter?

Ситуация такая - есть фрагменты, в одном из фрагментов есть ViewPager на 3 страницы.

Выбираю город, захожу в фрагмент с ViewPager - и в нем данные отображаются как надо, затем выхожу обратно в другой фрагмент, выбираю другой город или объект, не суть важно, и захожу опять в фрагмент с ViewPager и страницы пустые, обновляются только после перелистывания и то только 1 и 3-я страницы, вторая всегда пустая.

Вроде бы данные обновляются и передаются правильно, по логу они есть, но сразу не отображаются, а только после перелистывания. Вот код адаптера.

private class MyPagerAdapter extends FragmentStatePagerAdapter{

        public MyPagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public int getItemPosition(Object object) {
            Log.d("getItemPosition","123");
            return POSITION_NONE;
        }

        @Override
        public CharSequence getPageTitle(int position) {
            Resources res = getResources();
            String[] title = res.getStringArray(R.array.title_spa_viewpager_array);
            return title[position];
        }

        @Override
        public android.support.v4.app.Fragment getItem(int pos) {
            switch(pos) {
                case 0: return FirstFragment.newInstance(mSpa.getSpaName()+SpaInfoParserObject.MySpaInfo.getSpaInfoText());
                case 1: return SecondFragment.newInstance("",SpaInfoParserObject.MySpaInfo);
                case 2: return PhotoFragment.newInstance("", SpaInfoParserObject.MySpaInfo.getSpaInfoPic(), mSpa);
                default: return FirstFragment.newInstance(mSpa.getSpaPhone());
            }
        }

        @Override
        public int getCount() {
            return 3;
        }
    }
  • Вопрос задан
  • 3378 просмотров
Пригласить эксперта
Ответы на вопрос 1
VYakushev
@VYakushev
Разработчик Android в Nowtaxi
Обратите внимание на то, что в getItem() фрагменты всегда пересоздаются заново с помощью метода newInstance(). То есть фактически у вас "в живых" только один фрагмент, поэтому данные и отображаются только после перелистывания.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы