FragmentPagerAdapter 内に ~20 個のフラグメントがあり、フラグメントを選択するリストが含まれているため、フラグメントの再作成はありません。
private List<TitledFragment> fragments;
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
this.fragments = new ArrayList<TitledFragment>();
}
@Override
public Fragment getItem(int i) {
return fragments.get(i).getFragment();
}
@Override
public int getCount() {
return fragments.size();
}
@Override
public CharSequence getPageTitle(int position) {
return fragments.get(position).getTitle();
}
public synchronized List<TitledFragment> getFragments() {
return fragments;
}
public synchronized void addFragment(TitledFragment fragment) {
fragments.add(fragment);
notifyDataSetChanged();
}
FragmentPagerAdapter は ViewPager のアダプターとして設定され、その後、フラグメントを並べ替えます (シャッフルはテスト用でした)。
Collections.shuffle(mSectionsPagerAdapter.getFragments());
mSectionsPagerAdapter.notifyDataSetChanged();
何らかの理由で、順序が異なるため getItem に対して異なるフラグメントを返す場合でも、タイトルの順序のみが変更されています。これはなぜですか、どうすれば回避できますか?