Search code examples
javaandroidandroid-viewpagersharedpreferencesandroid-context

Context in ViewPager


I store information if user is logged in SharedPreferences. In my ViewPager adapter I want to check if userIsLoggedIn. Depending on that I will display different fragments. My question is: in order to get data from sharedPreferences I need a context. How do I get it from my ViewPager adapter class? Thank you.

public class ViewPageAdapter extends FragmentPagerAdapter {

private static int NUM_ITEMS = 3;
private FragmentManager mFragmentManager;

public ViewPageAdapter(@NonNull FragmentManager fm) {
    super(fm);
    mFragmentManager = fm;
}

@NonNull
@Override
public Fragment getItem(int position) {
    switch (position){
        case 0: return new FragmentInsta();
        case 1: return new FragmentList();
        case 2: return new FragmentHostUnlogged();
        default:
            return new FragmentList();
    }
}

@Override
public int getCount() {
    return NUM_ITEMS;
}

@Override
public int getItemPosition(@NonNull Object object) {
    if (object instanceof FragmentHostUnlogged)
        return POSITION_NONE;
    return POSITION_UNCHANGED;
}

}


Solution

  • You should use FragmentStatePagerAdapter . FragmentPagerAdapter is deprecated.

    class ViewPageAdapter extends FragmentStatePagerAdapter {
    
             Context context; 
    
             ViewPagerAdapter(FragmentManager manager,Context c) {
                super(manager,BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
                context=c;
            }
    

    Read Context from official guideline.

    Interface to global information about an application environment. This is an abstract class whose implementation is provided by the Android system.

    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager(), getApplicationContext());