У меня есть код, который я хочу обобщить.Метод реализации с generics
У меня есть универсальный класс
public class SynthesisFragmentAdapter<A extends Fragment & IBaseFragment, B extends Fragment & IBaseFragment> extends FragmentPagerAdapter {
private Context context;
private Class<A> synthesisFragmentClass1;
private Class<B> synthesisFragmentClass2;
public SynthesisFragmentAdapter(FragmentManager fm, Context context,
Class<A> synthesisFragmentClass1,
Class<B> synthesisFragmentClass2) {
super(fm);
this.context = context;
this.synthesisFragmentClass1 = synthesisFragmentClass1;
this.synthesisFragmentClass2= synthesisFragmentClass2;
}
}
Я хочу назвать этот класс, когда мне нужно добавить фрагмент динамически к экземпляру SynthesisFragmentAdapter
. Я попробовал этот
// dynamically add same kind of fragment to adapter
protected void init(Class a, Class b , Fragment f1 , Fragment f2) {
TabLayout tab = (TabLayout) findViewById(R.id.tab);
ViewPager pager = (ViewPager) findViewById(R.id.pager);
SynthesisFragmentAdapter<f1 , f2> fragmentAdapter = new SynthesisFragmentAdapter<f1, f2>(getSupportFragmentManager(), this , a , b);
pager.setAdapter(fragmentAdapter);
tab.setupWithViewPager(pager);
}
Но я не думаю, что это правильно, потому что фрагменты, которые я использую реализовать интерфейс (IBaseFragment
) в дополнение к расширению Fragment
. Что я делаю неправильно?
Получаете ли вы какие-либо ошибки компиляции или исключения во время выполнения? Выполняет ли программа то, что вы хотите? –
@ Эрик Г. Хагстром. Спасибо за ваш ответ . Действительно, я получил ошибку компиляции при создании SynthesisFragmentAdapter: «неизвестный класс f1, неизвестный класс f2»). Я думаю, что у меня что-то не хватает, но я не знаю почему. – ulquiorra