如何为选项卡式活动的每个选项卡创建UI?

时间:2012-07-29 11:39:08

标签: android eclipse android-layout

我正在学习开发Android但我不知道如何为片段创建UI。 我创建了一个新活动,在创建过程中我选择了导航类型“Tabs + Swipe”。 现在我有一个布局xml,我无法使用WYSIWYG界面进行修改,如果我 - 例如 - 在类文件中使用java创建一个按钮小部件,它会在每个“标签视图”中创建它。

我基本上想为每个标签(片段)创建不同的界面。

谢谢

1 个答案:

答案 0 :(得分:13)

在刚创建的Activity中,您可以找到内部类SectionsPagerAdapter。看看这个方法:

@Override
public Fragment getItem(int i) {
    Fragment fragment = new DummySectionFragment();
    Bundle args = new Bundle();
    args.putInt(DummySectionFragment.ARG_SECTION_NUMBER, i + 1);
    fragment.setArguments(args);
    return fragment;
}

每个选项卡的此方法都返回DummySectionFragment的实例,只有不同的包。如果要为每个选项卡创建具有不同视图的片段,则应检查i变量的值,并根据此值创建正确的片段。例如:

@Override
public Fragment getItem(int i) {
    Fragment fragment; 
    switch(i){
    case 0:
         fragment = new MyFragment1();
         break;
    case 1:
         fragment = new MyFragment2();
         break;
    case 3:
         fragment = new MyFragment3();
         break;
    default:
         throw new IllegalArgumentException("Invalid section number");
    }

    //set args if necessary
    Bundle args = new Bundle();
    args.putInt(DummySectionFragment.ARG_SECTION_NUMBER, i + 1);
    fragment.setArguments(args);

    return fragment;
}

而不是DummySectionFragment类创建三个类:MyFragment1,MyFragment2,MyFragment2以及每个类,内部方法onCreateView创建或扩充视图,例如:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.my_fragment1.xml, null);
    return v;

}

R.layout.my_fragment1.xml是MyFragment1片段的布局。