在ViewPager中动态添加和删除片段

Mat*_*ska 5 android adapter android-fragments android-viewpager

我使用的是ViewPager一个PagerFragmentAdapter使用内部列表来提供片段的自定义.我想在设置更改时动态添加和删除片段.

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.fragment_pager);
    mAdapter = new ServicePagerAdapter(getSupportFragmentManager());
    mPager = (ViewPager) findViewById(R.id.pager);
    mPager.setAdapter(mAdapter);
}
Run Code Online (Sandbox Code Playgroud)

我试图再次打电话setAdapter但是我得到了一个IllegalStateException (Can not perform this action after onSaveInstanceState).

怎么能达到我的目的?

Hit*_*sit 2

您无需ServicePagerAdapter每次都重新设置。onCreate()在您的方法Activity(或onActivityCreated()您的方法)中创建和设置一次就足够了Fragment,然后您可以简单地调用add()适配器的方法来向其中添加新元素。但不要忘记notifyDataSetChanged()在每次添加适配器后调用。

  • 如果元素已被删除,仅在 PagerAdapter 上调用 notificationDataSetChanged() 是不够的。您还需要重写 PagerAdapter 的 getItemPosition 方法。如果元素仍然存在,则返回 POSITION_UNCHANGED;如果元素已被删除,则返回 POSITION_NONE。 (2认同)