Не удается устранить ошибку метода super() в Fragmentmanager Android
Я не программист на Java, но пытаюсь создать приложение, попутно пытаясь изучить Java. Я пытаюсь добавить 2 фрагмента, один - это фрагмент входа в систему, а другой - фрагмент регистра, но при использовании суперконструктора, с которым я столкнулся, не удается устранить ошибку. Может ли кто-нибудь подсказать, что я делаю не так?
Я понимаю, что super используется для доступа к конструктору родительского класса, который в моем случае не пуст.
Ниже приведен код MainActivity:
public class MainActivity extends FragmentActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ViewPager2 viewPager = findViewById(R.id.viewPager);
AuthenticationPagerAdapter pagerAdapter = new AuthenticationPagerAdapter(getSupportFragmentManager());
pagerAdapter.addFragment(new fragment_login());
pagerAdapter.addFragment(new fragment_register());
viewPager.setAdapter(pagerAdapter);
}
public static class AuthenticationPagerAdapter extends FragmentStateAdapter
{
private ArrayList<Fragment> fragmentList = new ArrayList<>();
public AuthenticationPagerAdapter(FragmentManager fragmentActivity)
{
super(fragmentActivity);
}
public Fragment getItem(int i)
{
return fragmentList.get(i);
}
public int getCount()
{
return fragmentList.size();
}
void addFragment(Fragment fragment) {
fragmentList.add(fragment);
}
@NonNull
@Override
public Fragment createFragment(int position)
{
return null;
}
@Override
public int getItemCount()
{
return 0;
}
}
}
2 ответа
Я думаю невозможно использовать super()
за fragmentActivity
параметр. Вы должны отправить значения вsuper()
метод из расположенного выше конструктора. Кстати, я не вижу конструктора дляMainActivity
учебный класс. Из какого класса вы хотите получить значения?
Используя super()
в конструкторе вы пытаетесь вызвать конструктор родительского класса.
В этом случае FragmentStateAdapter
имеет 3 конструктора:
FragmentStateAdapter(FragmentActivity fragmentActivity)
FragmentStateAdapter(Fragment fragment)
FragmentStateAdapter(FragmentManager fragmentManager, Lifecycle lifecycle)
В вашем случае у вас есть:
public AuthenticationPagerAdapter(FragmentManager fragmentActivity)
а также super(FragmentManager);
не соответствует ни одному супер конструктору.
Вы можете использовать что-то вроде:
public AuthenticationPagerAdapter(FragmentActivity fragmentActivity) {
super(fragmentActivity);
}
public AuthenticationPagerAdapter(FragmentManager fragmentManager,Lifecycle lifecycle) {
super(fragmentManager, lifecycle);
}