我正在使用自定义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转换为函数
答案 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);
}