使用ArrayPagerAdapter动态添加和删除选项卡

时间:2015-10-13 04:09:16

标签: android fragmentpageradapter commonsware-cwac

这是我在这里提出的问题Creating a new ArrayPagerAdapter with variety of Fragments的延续。关于我使用错误的ArrayAdapter我只是需要使用支持v4的那个,你已经死了。我在下面发布了它的代码。我现在陷入困境的下一个块之一是在传递给SimplePageAdapter的ArrayList中创建PageDescriptor对象。我已经尝试将Demo中使用的SimplePageDescriptor类复制并粘贴到我的代码中,但是在尝试从Parceable.Creator方法返回时遇到错误。它说SimplePageDescriptor在com.commonsware.cwac.pager.SimplePageDescriptor中有私有访问权限。我想我想要掌握的主要内容是如何在我自己的代码中使用演示中的SimplePageDescriptor。我只使用整个寻呼机文件夹吗?我已经发布了下面的SimplePagerAdapter和SimplePageDescriptor的代码。

 class SimplePagerAdapter extends ArrayPagerAdapter<android.support.v4.app.Fragment> {



    public SimplePagerAdapter(FragmentManager fragmentManager,
                              ArrayList<PageDescriptor> descriptors) {
        super(fragmentManager, descriptors);
    }

    @Override
    protected Fragment createFragment(PageDescriptor desc) {

        mMainFragment = JudgeMainFragment.newInstance();

        mClassifyFragment = JudgeClassifyFragment.newInstance();

        mSidebarFragment = JudgeSidebarFragment.newInstance((SidebarCall) mActivity);


        mVerdictFragment = JudgeVerdictFragment.newInstance();



        return (mMainFragment.newInstance());


    }
}





public static final Parcelable.Creator<com.commonsware.cwac.pager.SimplePageDescriptor> CREATOR=
  new Parcelable.Creator<com.commonsware.cwac.pager.SimplePageDescriptor>() {
    public com.commonsware.cwac.pager.SimplePageDescriptor createFromParcel(Parcel in) {
      //This is the line I get the error at
      return new com.commonsware.cwac.pager.SimplePageDescriptor(in);
    }

    public com.commonsware.cwac.pager.SimplePageDescriptor[] newArray(int size) {
      return new com.commonsware.cwac.pager.SimplePageDescriptor[size];
    }
  };

1 个答案:

答案 0 :(得分:0)

  

我现在陷入困境的下一个块之一就是在传递给SimplePageAdapter的ArrayList中创建PageDescriptor对象

PageDescriptor是一个界面。创建自己的类(例如,BlainePageDescriptor)来实现接口。这包含在the documentation

  

我已经尝试将Demo中使用的SimplePageDescriptor类复制并粘贴到我的代码中

这不会解决你的问题。

根据我的理解,您的问题是,您希望ArrayPagerAdapter能够处理N种不同类型的网页(JudgeMainFragmentJudgeClassifyFragment等)。这需要您从createFragment()返回正确的片段,给定提供的PageDescriptor。因此,您需要创建自己的PageDescriptor实施(例如BlainePageDescriptor)。该类需要保留足够的信息以满足PageDescriptor接口能够告诉createFragment()要创建的片段类型。