2012-07-29 108 views
2

我正在学习为android开发,但我不知道如何为片段创建UI。 我创建了一个新的活动,在创建过程中,我选择了导航类型“选项卡+滑动”。 现在我有一个布局xml,我无法使用WYSIWYG接口进行修改,并且如果我 - 例如 - 在类文件中使用java创建按钮小部件,它会在每个“选项卡视图”中创建它。如何为选项卡式活动的每个选项卡创建UI?

我基本上想为每个选项卡(片段)创建不同的接口。

谢谢

回答

12

在刚创建活动,你可以找到内部类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片段的布局。

+0

真的很感谢你。有用! – Boris 2012-07-29 14:15:36

+0

片段子类必须是“静态”吗? – 2013-07-31 23:48:14

+0

如果您询问MyFragment1,MyFragment2等,这些只是扩展'Fragment'的公共类,每个都在分开的java文件中。 – Leszek 2013-08-01 18:06:35

相关问题