since Google introduced androidX I'm having a problem with viewpager. I want to make a tab layout where I can swipe between fragments. getSupportFragmentManager() is deprecated now and shows an error
ViewPagerAdapter(FragmentManager, int) in ViewPagerAdapter cannot be applied to (FragmentManager)
Here is my adapter:
public class ViewPagerAdapter extends FragmentPagerAdapter {
public ViewPagerAdapter(@NonNull FragmentManager fm, int behavior) {
super(fm, behavior);
}
@NonNull
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return new RecentFragment();
case 1:
return new TracksFragment();
case 2:
return new AlbumFragment();
case 3:
return new GenresFragment();
}
return null;
}
@Override
public int getCount() {
return 4;
}
}
and in my activity I need to call it
ViewPager viewPager = findViewById(R.id.view_pager);
viewPager.setAdapter(new ViewPagerAdapter(getSupportFragmentManager());
I found the solution, in the constructor I have second paremeters and in the viewpager I added page position and is working fine.
public static int PAGE_POSITION = 4;
ViewPager viewPager = findViewById(R.id.view_pager);
viewPager.setAdapter(new ViewPagerAdapter(getSupportFragmentManager(), PAGE_POSITION));
TabLayout tab = findViewById(R.id.tab_layout);
tab.setupWithViewPager(viewPager);
Your ViewPagerAdapter
class has a constructor that takes 2 parameters.
When you try to create a new ViewPagerAdapter
, you only use 1 parameter.
Which is exactly what the error message is telling you.
Look at the documentation for the FragmentPagerAdapter
class and see what the 2nd parameter should be.