【发布时间】:2014-12-09 14:19:57
【问题描述】:
我正在使用 FragmentPagerAdapter 和 ViewPager 添加自定义 Fragments 编辑:从我的 MainActivity(还通过捆绑发送基于 JSON 响应的一堆额外数据)并使用滑动动作移动到列表中的下一个片段。
public class MyPagerAdapter extends FragmentPagerAdapter implements Serializable {
public List<Fragment> fragments;
public FragmentManager fm;
public MyPagerAdapter(FragmentManager fm) {
super(fm);
this.fm = fm;
this.fragments = new ArrayList<Fragment>();
}
@Override
public Fragment getItem(int position) {
return fragments.get(position);
}
@Override
public int getCount() {
return fragments.size();
}
}
只要我添加新的 Fragments,一切正常 使用
MyPagerAdapter pageAdapter = new MyPagerAdapter(getSupportFragmentManager());
pager = (ViewPager)findViewById(R.id.myViewPager);
pageAdapter.fragments.add(new CustomFragment());
pager.setAdapter(pageAdapter);
但我找不到将片段添加到列表开头并向后滑动的正确方法。
我都试过了
pageAdapter.fragments.add(0, new CustomFragment());
以及将 FragmentPagerAdapters 列表更改为 LinkedList 并使用
pageAdapter.fragments.addFirst(new CustomFragment());
然后使用刷新适配器
pageAdapter.notifyDataSetChanged();
我不断收到以下异常:
java.lang.IllegalStateException: Can't change tag of fragment CustomFragment{2ead9520 #10 id=0x7f0a0002 android:switcher:2131361794:10}: was android:switcher:2131361794:10 now android:switcher:2131361794:11
【问题讨论】:
-
为每个页面创建一个新实例。
-
@Krupal:我以为我已经在创建 CustomFragment() 的新实例
标签: android android-fragments android-viewpager android-fragmentactivity