Android - 如何将myFragment.class作为参数传递给函数

时间:2014-11-25 19:19:40

标签: android android-fragments android-tabhost

我正在使用自定义Tab控件创建Tab片段,如下所示

View tabView = createTabView(getActivity(),"Tab 1");
mTabHost.addTab(mTabHost.newTabSpec("tab1").setIndicator(tabView),
                Tab1Fragment.class, null);

但是,我不想在视图中为每个选项卡提供这两行代码,而是想创建一个通用函数,例如

private void addTab(String sTag, String sTitle, Class<Fragment> cls) {
    View tabView = createTabView(getActivity(),sTitle);
    mTabHost.addTab(mTabHost.newTabSpec(sTag).setIndicator(tabView),
    cls, null);
}

问题是我无法弄清楚如何将Tab1Fragment.class转换为函数

1 个答案:

答案 0 :(得分:2)

Java中的泛型不是协变的,即。您无法传递Fragment的子类型以满足Fragment的通用参数类型。这是做你想做的正确方法:

private <T extends Fragment> void addTab(String sTag, String sTitle, Class<T> cls) {
    View tabView = createTabView(getActivity(),sTitle);
    mTabHost.addTab(mTabHost.newTabSpec(sTag).setIndicator(tabView),
            cls, null);
}