在Container Activity中设置自定义PagerAdapter以销毁ViewPagers片段

时间:2014-12-19 16:40:38

标签: android android-fragments arraylist android-viewpager fragmentpageradapter

所以我有一个ViewPager活动。我希望它在活动中按下按钮时销毁所有ViewPager的片段,并用新文本/视图更新ViewPager的片段。

我已经在活动中编写了如下代码。

 SectionsPagerAdapter mSectionsPagerAdapter;

    mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager(), null);

    ViewPager mViewPager = (ViewPager)findViewById(R.id.vp_main);
      final PagerTabStrip strip = (PagerTabStrip)findViewById(R.id.pts_main);         
        mViewPager.setAdapter(mSectionsPagerAdapter);

        ArrayList<PagerItem> pagerItems = new ArrayList<PagerItem>();
        pagerItems.add(new PagerItem("Fragment1", new Fragment1())); //Error here when...
        pagerItems.add(new PagerItem("Fragment2", new Fragment2()));
        pagerItems.add(new PagerItem("Fragment1", new Fragment3()));
        pagerItems.add(new PagerItem("Fragment2", new Fragment4()));
        pagerItems.add(new PagerItem("Fragment1", new Fragment5()));
        pagerItems.add(new PagerItem("Fragment2", new Fragment6()));


      mSectionsPagerAdapter.setPagerItems(pagerItems); // I changed to my custom adapter here
      mSectionsPagerAdapter.notifyDataSetChanged();

错误信息是...... 不能访问SectionsPagerAdapter类型的封闭实例。必须使用SectionsPagerAdapter类型的封闭实例限定分配(例如x.new A(),其中x是SectionsPagerAdapter的实例)。

有人可以解释这个问题吗?非常感谢

1 个答案:

答案 0 :(得分:0)

确保SectionsPagerAdapter类存在且其PUBLIC及其构造函数为PUBLIC。

喜欢这个......

public class SectionsPagerAdapter {
      public SectionsPagerAdapter() {
      }
}

并替换此

new SectionsPagerAdapter(getSupportFragmentManager(), null);

用这个

this.new SectionsPagerAdapter(getSupportFragmentManager(), null);

或者您可以将SectionsPagerAdapter设置为STATIC。 e.g。

public static class SectionsPagerAdapter {
      public SectionsPagerAdapter() {
      }
}
祝你好运。 :)