簡體   English   中英

Android-如何將myFragment.class作為參數傳遞給函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM