FragmentStatePagerAdapter устарел от API 27

FragmentStatePagerAdapter устарел из API 27. Какая альтернатива FragmentStatePagerAdapter?

private class MainPagerAdapter extends FragmentStatePagerAdapter {

        MainPagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int position) {
            Fragment result = new DummyFragment();
             return result;
        }

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

    }

код выше показывает FragmentStatePagerAdapter, getItem и super(fm); как устаревший

Ответ 1

Следующие конструкторы делают то же самое

super(@NonNull FragmentManager fm)
super(@NonNull FragmentManager fm, BEHAVIOR_SET_USER_VISIBLE_HINT)

Передача BEHAVIOR_SET_USER_VISIBLE_HINT устарела. Вместо этого вы должны передать BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT.

Разница в прохождении этих объясняется в FragmentPagerAdapter:

 /**
 * Indicates that Fragment#setUserVisibleHint(boolean) will be 
 * called when the current fragment changes.
 */
@Deprecated
public static final int BEHAVIOR_SET_USER_VISIBLE_HINT = 0;

/**
 * Indicates that only the current fragment will be 
 * in the Lifecycle.State#RESUMED state. All other Fragments 
 * are capped at Lifecycle.State#STARTED.
 */
public static final int BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT = 1;

Ответ 2

Вы можете продлить

androidx.fragment.app.FragmentStatePagerAdapter;

и позвонить

super(fragmentManager, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);

в конструкторе вашего класса

Ответ 3

Вам нужно добавить поведение в свой MainPagerAdapter следующим образом:

super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);

Ответ 5

Согласно документации, файл android.support.v13.app.FragmentPagerAdapter устарел.

Вы можете заменить его на android.support.v4.app.FragmentPagerAdapter.

Проверьте это для официальной выписки.