Контекст в ViewPager - PullRequest
       35

Контекст в ViewPager

1 голос
/ 15 апреля 2020

Я сохраняю информацию, если пользователь вошел в SharedPreferences. В моем адаптере ViewPager я хочу проверить, если userIsLoggedIn. В зависимости от этого я буду отображать разные фрагменты. Мой вопрос: чтобы получить данные из sharedPreferences, мне нужен контекст. Как я могу получить его из моего класса адаптера ViewPager? Спасибо.

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;
}

}

1 Ответ

1 голос
/ 15 апреля 2020

Вы должны использовать FragmentStatePagerAdapter. FragmentPagerAdapter устарел.

class ViewPageAdapter extends FragmentStatePagerAdapter {

         Context context; 

         ViewPagerAdapter(FragmentManager manager,Context c) {
            super(manager,BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
            context=c;
        }

Чтение Контекст из официального руководства.

Интерфейс для глобальной информации о среде приложения. Это абстрактный класс, реализация которого обеспечивается системой Android.

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