繁体   English   中英

如何制作具有通用类型和Android Fragment继承的接口?

[英]How to make an Interface with Generic type and inheritance of Android Fragment?

我正在开发一个带有活动和一些片段的 Android 项目。 这个想法是:当活动启动时它显示片段A,当用户点击片段A按钮时,活动应该替换片段A,带有片段B的新实例,我想让片段完全独立宿主Activity,作为一个模块化的片段。

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

这是我的片段 A 的界面:

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

这将是 Activity 实现:

public class MyActivity  implements ActivityInterface {

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

}
  • 我怎样才能让它工作?
  • 有没有更好的解决方案?

我是“Java 泛型”主题的新手,所以请清楚,我将不胜感激。

我相信你正在寻找这个:

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, Fragment fragment);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM