我正在尝试创建用于 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/