Java 如何制作一个具有泛型类型和继承Android片段的接口?

Java 如何制作一个具有泛型类型和继承Android片段的接口?,java,android,generics,android-fragments,Java,Android,Generics,Android Fragments,我正在开发一个带有活动和一些片段的Android项目。其思想是:当活动启动时,它显示片段A,当用户单击片段A按钮时,活动应替换片段A,使用片段B的新实例,我希望使片段完全独立于主机活动,作为模块化片段 因此,我想实现一个简单的接口,帮助我将活动中的当前片段更改为另一个片段。在接口中,我创建了一个方法,该方法可以为Fragment类的任何对象类型继承管理FragmentTransaction,但我对这个问题有点迷茫,我搜索并阅读了很多文档,但我无法得到关于这个问题的明确答案。我不知道怎么做。我有一

我正在开发一个带有活动和一些片段的Android项目。其思想是:当活动启动时,它显示片段A,当用户单击片段A按钮时,活动应替换片段A,使用片段B的新实例,我希望使片段完全独立于主机活动,作为模块化片段

因此,我想实现一个简单的接口,帮助我将活动中的当前片段更改为另一个片段。在接口中,我创建了一个方法,该方法可以为Fragment类的任何对象类型继承管理FragmentTransaction,但我对这个问题有点迷茫,我搜索并阅读了很多文档,但我无法得到关于这个问题的明确答案。我不知道怎么做。我有一些代码,但不正确或不完整

这是我的片段A的接口:

public interface ActivityInterface {
    void replaceFragment(int fragmentId, <? extends Fragment> fragment);
}
公共接口活动接口{

void replaceFragment(int fragmentId,我相信您正在寻找以下内容:

public interface ActivityInterface {
    <T extends Fragment> void replaceFragment(int fragmentId, T fragment);
}

public class MyActivity  implements ActivityInterface {

    public <T extends Fragment> void replaceFragment(int fragmentId, T fragment) {
        FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
        fragmentTransaction.replace(fragmentId, fragment);
        fragmentTransaction.commit();
    }
}
公共接口活动接口{
void replaceFragment(int fragmentId,T fragment);
}
公共类MyActivity实现ActivityInterface{
公共void replaceFragment(int fragmentId,T fragment){
FragmentTransaction FragmentTransaction=getFragmentManager().beginTransaction();
fragmentTransaction.replace(fragmentId,fragment);
fragmentTransaction.commit();
}
}

(虽然从技术上讲,我认为仅使用
void replaceFragment(int fragmentId,Fragment Fragment);
)就可以了。

这正是你必须要做的:如果你想一想这个问题,就会感到非常困惑。它根本不需要像你正确指出的那样使用泛型:)
public interface ActivityInterface {
    <T extends Fragment> void replaceFragment(int fragmentId, T fragment);
}

public class MyActivity  implements ActivityInterface {

    public <T extends Fragment> void replaceFragment(int fragmentId, T fragment) {
        FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
        fragmentTransaction.replace(fragmentId, fragment);
        fragmentTransaction.commit();
    }
}