【问题标题】:Dynamically Adding and Removing tabs using ArrayPagerAdapter使用 ArrayPagerAdapter 动态添加和删除选项卡
【发布时间】:2015-10-13 04:09:15
【问题描述】:

这是我第一次在这里提出的问题Creating a new ArrayPagerAdapter with variety of Fragments 的延续。你对我使用了错误的 ArrayAdapter 已经死心了,我只需要使用支持 v4 的那个。我已经在下面发布了它的代码。我现在遇到的下一个块之一是在传递给 SimplePageAdapter 的 ArrayList 中创建 PageDescriptor 对象。我尝试将演示中使用的 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];
    }
  };

【问题讨论】:

    标签: android fragmentpageradapter commonsware-cwac


    【解决方案1】:

    我现在遇到的下一个问题是在传递给 SimplePageAdapter 的 ArrayList 中创建 PageDescriptor 对象

    PageDescriptor 是一个接口。创建您自己的实现接口的类(例如,BlainePageDescriptor)。这在the documentation 中有介绍。

    我尝试将演示中使用的 SimplePageDescriptor 类复制并粘贴到我的代码中

    那不会解决你的问题。

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

    【讨论】:

    • 您非常感谢您的所有帮助,我现在在代码中成功地使用了您库中的适配器。你对让我困惑的概念给出了很好的解释,你给我的解决方案就像一个魅力。抱歉,如果我的问题有点无聊,但这让我困惑了 3 周,并且使用您的图书馆在几天内就将其清除了。再次感谢所有帮助:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-07
    • 2017-08-01
    • 1970-01-01
    • 2014-07-12
    • 1970-01-01
    • 2011-11-10
    • 1970-01-01
    相关资源
    最近更新 更多