android - 添加 fragment 的通用方法,如何实现它

标签 android android-fragments

我正在尝试创建用于 fragment 添加的方法,我将能够多次使用,但我遇到了一些错误。 这是我的方法:

// global variable
fragManager = getSupportFragmentManager();
private <T> void findFragmentByTagAndAdd(String fragmentTag, Class<?> cls, T t){
    Fragment fragm = fragManager.findFragmentByTag(fragmentTag);
    if (fragm == null) {
        fragm = cls.newInstance(t);
        fragManager.beginTransaction()
                .add(R.id.host_fragment_container, fragm)
                .commit();
    } 
}

Where T t is some data (for example some model class) that must be passed to setArguments of fragment's newInstance method

我得到下一个错误:

    cannot be applied to given types;
                    fragm = cls.newInstance(t);
                               ^   required: no arguments   
found: T#1   reason: actual and formal argument lists differ in length

最佳答案

替换这个:

fragm = cls.newInstance(t);

用类似的东西:

Constructor constructor = cls.getConstructor(t.getClass());
fragm = (Fragment) constructor.newInstance(t);

关于android - 添加 fragment 的通用方法,如何实现它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52073813/

相关文章:

java - 如何在同一个包中重用已经实现的方法?

android - Titanium Studio 找不到Android SDK(尝试了多种解决方案)

android - 如何在 fragment 中隐藏软键盘?

android - ViewPager 中的 RecyclerView 不会滚动

java - 更换 fragment 时内存泄漏

android - 将 SQLite 数据库与 fragment 一起使用

android - FloatingActionButton 库中的多个按钮

android - 使用 Gitlab-CI 在 Android 中使用 Gitlab CI :- How to create the multiple apk(like development, 登台和生产)?

java - 如何使用 viewPager 和 Fragments 传递多个数据

android - fragment 中的 SimpleCursorAdapter ClassCastException