Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 当每个片段上的代码几乎相同时,如何正确使用actionbar选项卡?_Android_Android Fragments_Android Actionbar - Fatal编程技术网

Android 当每个片段上的代码几乎相同时,如何正确使用actionbar选项卡?

Android 当每个片段上的代码几乎相同时,如何正确使用actionbar选项卡?,android,android-fragments,android-actionbar,Android,Android Fragments,Android Actionbar,我正在制作一个带有actionbar标签的应用程序,每个片段的代码几乎相同。。。所以我考虑使用1个片段(将选项卡位置传递给片段,以便它知道在onCreateView上做什么),但是一些开发人员说保存选项卡状态是一件痛苦的事情 我还考虑过创建一个类,并从中扩展每个片段,但是,使用的代码几乎是相同的,我在尝试时遇到了一些麻烦 所以我不确定最好的方法是什么,这个应用程序正在运行。。。但我希望你能帮助我改进我的设计。提前感谢。您可以创建一个静态方法来创建片段并设置参数,从而创建类似的片段。运行oncre

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

我还考虑过创建一个类,并从中扩展每个片段,但是,使用的代码几乎是相同的,我在尝试时遇到了一些麻烦


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

您可以创建一个静态方法来创建片段并设置参数,从而创建类似的片段。运行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();
}

}
公共类MainActionBarTabListFragment扩展了ListFragment{
公共静态MainActionBarTabListFragment新实例(int-sortOrder,ArrayList选项卡列表){
MainActionBarTabListFragment f=新的MainActionBarTabListFragment();
//提供num输入作为参数。
Bundle args=新Bundle();
参数putInt(排序顺序、排序器);
args.putStringArrayList(选项卡名称,选项卡列表);
f、 设置参数(args);
返回f;
}
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
Bundle b=this.getArguments();
如果(b!=null){
mSortOrder=b.getInt(排序顺序,0);
tabsList=b.getStringArrayList(选项卡名称);
}
}
公共类MainActionBarTabsPagerAdapter扩展了FragmentStatePagerAdapter{
私有ArrayList选项卡列表;
公共MainActionBarTabsPagerAdapter(碎片管理器格式,ArrayList选项卡列表){
超级(fm);
this.tabsList=tabsList;
}
/**当请求创建页面时,将调用此方法*/
@凌驾
公共片段getItem(int fragmentPage){
MainActionBartabListFragment0=MainActionBarTabListFragment
.newInstance(fragmentPage,tabsList);
返回碎片0;
}
@凌驾
public int getCount(){
返回tabsList.size();
}
}

<代码> >“我用Action Bar Tabs制作一个应用程序”——注意动作栏标签在“L”开发者预览中被弃用,并且应该在Android的未来版本中被弃用。考虑使用标签的其他东西,例如使用标签指示符的<代码> ViewPager < /代码>。