使用 ArrayPagerAdapter 动态添加和删除选项卡
Dynamically Adding and Removing tabs using ArrayPagerAdapter
这是我第一次在这里提出的问题 Creating a new ArrayPagerAdapter with variety of Fragments 的延续。你对我使用错误的 ArrayAdapter 完全不了解,我只需要使用支持 v4 的那个。我已经在下面发布了它的代码。我现在陷入困境的下一个块是在传递给 SimplePageAdapter 的 ArrayList 中创建 PageDescriptor 对象。我已尝试将演示中使用的 SimplePageDescriptor class 复制并粘贴到我的代码中,但在尝试从 Parceable.Creator 方法 return 时出现错误。它说 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];
}
};
One of the next blocks i'm getting stuck on right now is creating the PageDescriptor objects in the ArrayList passed into SimplePageAdapter
PageDescriptor
是一个接口。创建您自己的 class(例如,BlainePageDescriptor
)来实现接口。 the documentation.
中对此进行了介绍
I've tried copying and pasting the SimplePageDescriptor class used in the Demo into my code
那不能解决你的问题。
据我了解,您的问题是您希望 ArrayPagerAdapter
能够处理 N 种不同类型的页面(JudgeMainFragment
、JudgeClassifyFragment
等)。鉴于提供的 PageDescriptor
,这要求您 return 来自 createFragment()
的正确片段。因此,您需要创建自己的 PageDescriptor
实现(例如 BlainePageDescriptor
)。 class 需要保留足够的信息来满足 PageDescriptor
接口 和 能够告诉 createFragment()
要创建什么样的片段。
这是我第一次在这里提出的问题 Creating a new ArrayPagerAdapter with variety of Fragments 的延续。你对我使用错误的 ArrayAdapter 完全不了解,我只需要使用支持 v4 的那个。我已经在下面发布了它的代码。我现在陷入困境的下一个块是在传递给 SimplePageAdapter 的 ArrayList 中创建 PageDescriptor 对象。我已尝试将演示中使用的 SimplePageDescriptor class 复制并粘贴到我的代码中,但在尝试从 Parceable.Creator 方法 return 时出现错误。它说 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];
}
};
One of the next blocks i'm getting stuck on right now is creating the PageDescriptor objects in the ArrayList passed into SimplePageAdapter
PageDescriptor
是一个接口。创建您自己的 class(例如,BlainePageDescriptor
)来实现接口。 the documentation.
I've tried copying and pasting the SimplePageDescriptor class used in the Demo into my code
那不能解决你的问题。
据我了解,您的问题是您希望 ArrayPagerAdapter
能够处理 N 种不同类型的页面(JudgeMainFragment
、JudgeClassifyFragment
等)。鉴于提供的 PageDescriptor
,这要求您 return 来自 createFragment()
的正确片段。因此,您需要创建自己的 PageDescriptor
实现(例如 BlainePageDescriptor
)。 class 需要保留足够的信息来满足 PageDescriptor
接口 和 能够告诉 createFragment()
要创建什么样的片段。