【问题标题】:Android - How can I pass myFragment.class as a parameter to a functionAndroid - 如何将 myFragment.class 作为参数传递给函数
【发布时间】:2015-01-23 22:33:23
【问题描述】:

我正在创建一个带有自定义选项卡控件的选项卡片段,如下所示

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 以将其传递给函数

【问题讨论】:

标签: android android-fragments android-tabhost


【解决方案1】:

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);
}

【讨论】:

  • 谢谢。最有帮助!
猜你喜欢
  • 2013-01-27
  • 2020-12-18
  • 2010-09-17
  • 1970-01-01
  • 1970-01-01
  • 2021-04-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多