![](/img/trans.png)
[英]How can i pass a function as a parameter to another function in android?
[英]Android - How can I pass myFragment.class as a parameter to a function
我正在使用自定義標簽控件創建標簽片段,如下所示
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並將其傳遞給函數
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);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.