这是我在这里提出的问题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];
}
};
答案 0 :(得分:0)
我现在陷入困境的下一个块之一就是在传递给SimplePageAdapter的ArrayList中创建PageDescriptor对象
PageDescriptor
是一个界面。创建自己的类(例如,BlainePageDescriptor
)来实现接口。这包含在the documentation。
我已经尝试将Demo中使用的SimplePageDescriptor类复制并粘贴到我的代码中
这不会解决你的问题。
根据我的理解,您的问题是,您希望ArrayPagerAdapter
能够处理N种不同类型的网页(JudgeMainFragment
,JudgeClassifyFragment
等)。这需要您从createFragment()
返回正确的片段,给定提供的PageDescriptor
。因此,您需要创建自己的PageDescriptor
实施(例如BlainePageDescriptor
)。该类需要保留足够的信息以满足PageDescriptor
接口和能够告诉createFragment()
要创建的片段类型。