ViewPager PageAdapter не обновляет представление - PullRequest
1 голос
/ 03 декабря 2011

Хорошо, проблема почти такая же, как у этого поста , но решение там не решило мою проблему.

Я использую FragmentPagerAdapter с List, держащимFragment s, как показано ниже.

public class ViewPageAdapter extends FragmentPagerAdapter {
    private List<Fragment> fragments;

    public ViewPagerAdapter(FragmentManager fm, List<Fragment> fragments) {
        super(fm);
        this.fragments = fragments;
    }

    @Override
    public Fragment getItem(int position) {
        return fragments.get(position);
    }

    @Override
    public int getCount() {
        return fragments.size();
    }

    ...
}

И мой Fragment переопределяет метод onCreateView следующим образом.

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedState) {
    return inflater.inflate(theLayoutResourceId, container, false);
}

При использовании метода в этот пост (переопределить int getItemPosition(Object object) для возврата POSITION_NONE), я получу java.util.ConcurrentModificationException после вызова notifyDataSetChanged().

Поток вызова метода выглядит следующим образом.

  1. на ViewPager странице индекса 1 откройте Dialog, нажав Button (точно так же, как LoginButton в примере Facebook Android)
  2. после закрытия диалога (onAuthSucceed),удалите ViewPager индекс страницы 1 и добавьте еще одну страницу в индекс индекса 1
  3. принудительно обновите, используя notifyDataSetChanged

Я пробовал много других способов удалить Fragment перед добавлением Fragment к адаптеру, но страница не будет обновляться до нового содержимого.

Я только что нашел один способ сделать страницу пустой ...

viewpager.removeViewAt(1);
viewpagerAdapter.removeItem(1);
viewpagerAdapter.addItem(1, new Fragment(...));

Или решение проблемы обновления или java.util.ConcurrentModificationException было бы здорово.Спасибо за вашу помощь:)

1 Ответ

2 голосов
/ 05 марта 2013

Этот пост довольно старый, но на тот случай, если кто-нибудь столкнется с этим.Я нашел ответ в аналогичном посте здесь .Похоже, вы на правильном пути, но вам нужно изменить свой FragmentPagerAdapter на FragmentStatePagerAdapter и переопределить getItemPosition (Object), как вы предложили в своем сообщении.

Удачи вам.

...