web-dev-qa-db-fra.com

FragmentStatePagerAdapter est obsolète à partir de l'API 27

FragmentStatePagerAdapter est obsolète à partir de l'API 27. Quelle est l'alternative de 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;
        }

    }

le code ci-dessus indique que FragmentStatePagerAdapter, getItem et super(fm); sont obsolètes.

22
MJM

Les constructeurs suivants font la même chose

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

Qui passe BEHAVIOR_SET_USER_VISIBLE_HINT est devenu obsolète. Vous devriez passer BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT à la place.

La différence en passant ceux-ci est expliquée dans 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;
21
hkpogo

Vous pouvez prolonger

androidx.fragment.app.FragmentStatePagerAdapter;

et appeler

super(fragmentManager, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);

dans le constructeur de votre classe

12
Denis Dmitrienko

Vous devez ajouter un comportement dans votre MainPagerAdapter comme ceci:

super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);

6
Moisoni Ionut

Cette classe était obsolète dans l'API de niveau 27.1.0. qui était au support v13 https://developer.Android.com/reference/Android/support/v13/app/FragmentStatePagerAdapter

Utilisez FragmentStatePagerAdapter du support v4 https://developer.Android.com/reference/Android/support/v4/app/FragmentStatePagerAdapter

1
Azay Gupta

Selon Documentation , Android.support.v13.app.FragmentPagerAdapter était obsolète.

Vous pouvez le remplacer par Android.support.v4.app.FragmentPagerAdapter.

Cochez cette case pour la doumentation officielle.

1
Mayank Bhatnagar