我正在制作带有操作栏标签的应用程序,每个片段的代码几乎相同......所以我考虑使用1个片段(将标签位置传递给片段,以便它知道如何在onCreateView上做什么但是一些开发人员表示保存标签状态是一件痛苦的事。
我还想过创建一个类并从那里扩展每个片段,但是,使用过的代码几乎是一样的,我遇到了一些麻烦。
所以我不确定最好的方法,应用程序正在运行......但我希望你能帮助我改进我的设计。提前谢谢。
答案 0 :(得分:1)
通过创建静态方法来创建片段和设置参数,可以创建类似的片段。当oncreate运行时,您可以访问参数。与viewpager几乎相同。
public class MainActionBarTabListFragment extends ListFragment {
public static MainActionBarTabListFragment newInstance(int sortOrder,ArrayList<String> tabsList) {
MainActionBarTabListFragment f = new MainActionBarTabListFragment();
// Supply num input as an argument.
Bundle args = new Bundle();
args.putInt(SORT_ORDER, sortOrder);
args.putStringArrayList(TAB_NAME, tabsList);
f.setArguments(args);
return f;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle b = this.getArguments();
if (b != null) {
mSortOrder = b.getInt(SORT_ORDER, 0);
tabsList = b.getStringArrayList(TAB_NAME);
}
}
public class MainActionBarTabsPagerAdapter extends FragmentStatePagerAdapter {
private ArrayList<String> tabsList;
public MainActionBarTabsPagerAdapter(FragmentManager fm, ArrayList<String> tabsList) {
super(fm);
this.tabsList = tabsList;
}
/** This method will be invoked when a page is requested to create */
@Override
public Fragment getItem(int fragmentPage) {
MainActionBarTabListFragment fragment0 = MainActionBarTabListFragment
.newInstance(fragmentPage, tabsList);
return fragment0;
}
@Override
public int getCount() {
return tabsList.size();
}
}