当您的代码在每个片段上几乎相同时,如何正确使用操作栏选项卡?

时间:2014-10-02 19:48:29

标签: android android-fragments android-actionbar

我正在制作带有操作栏标签的应用程序,每个片段的代码几乎相同......所以我考虑使用1个片段(将标签位置传递给片段,以便它知道如何在onCreateView上做什么但是一些开发人员表示保存标签状态是一件痛苦的事。

我还想过创建一个类并从那里扩展每个片段,但是,使用过的代码几乎是一样的,我遇到了一些麻烦。

所以我不确定最好的方法,应用程序正在运行......但我希望你能帮助我改进我的设计。提前谢谢。

1 个答案:

答案 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();
}

}