1

我在 Android 中有一个 TabListener 以这种方式定义:

public static class TabListener<T extends Fragment> 
    implements ActionBar.TabListener { ... }

我有这个源代码:

Tab myTab = myActionBar.
                newTab().
                setText("Home").
                setTabListener(new TabListener<MyFragment>(
                    this, 
                    "Home", 
                    MyFragment.class
                ));
...

现在我想把它放到一个方法中:

addTab("Home", ???);

private void addTab(String text, ???) {
    Tab myTab = myActionBar.
                newTab().
                setText(text).
                setTabListener(new TabListener<???>(
                    this, 
                    text, 
                    ???.class
                ));
    ...
}

我必须填写什么而不是???

4

3 回答 3

5

您的选项卡侦听器需要 type 参数是Fragment

public static class TabListener<T extends Fragment>

因此,您需要确保代码中的情况如此

addTab("Home", ???);

private <T extends Fragment> void addTab(String text, Class<T> clazz) {
    Tab myTab = myActionBar.
                newTab().
                setText(text).
                setTabListener(new TabListener<T>(
                    this, 
                    text, 
                    clazz
                ));
    ...
}
于 2013-02-28T17:54:50.613 回答
3
addTab("Home", MyFragment.class);

private void addTab(String text, Class<? extends Fragment> clazz) {
    Tab myTab = myActionBar.
            newTab().
            setText(text).
            setTabListener(new TabListener<>(
                this, 
                text, 
                clazz
            ));
    ...
}
于 2013-02-28T17:49:47.613 回答
2

像这样的东西可能是你正在寻找的东西:

private <T> void addTab(String text, Class<T> clazz) {
    Tab myTab = myActionBar.
            newTab().
            setText(text).
            setTabListener(new TabListener<T>(
                this, 
                text, 
                clazz
            ));
    ...
}
于 2013-02-28T17:25:41.247 回答