2014-11-25 1 views
0

Я создаю Tab фрагмент с элементами управления пользовательского Tab следующимAndroid - Как я могу передать myFragment.class в качестве параметра функции

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

возможно дубликат [Как передать тип в качестве параметра метода в Java] (http://stackoverflow.com/questions/2240646/how-to- pass-a-type-as-a-method-in-java) – C0D3LIC1OU5

ответ

2

Generics в 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); 
} 
+0

Спасибо за это. Самое полезное! – QuantumTiger