WizardingStudios
WizardingStudios

Reputation: 572

Android FragmentPagerAdapter is deprecated

I have a warning: FragmentPagerAdapter is deprecated. Here my code:

package com.sweetieapps.librarianpro;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;
import java.util.ArrayList;
import java.util.List;

public class ViewPagerAdapter extends FragmentPagerAdapter {

    private final List<Fragment> fragmentList = new ArrayList<>();
    private final List<String> fragmentListTitles = new ArrayList<>();

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

    @NonNull
    @Override
    public Fragment getItem(int i) {
        return fragmentList.get(i);
    }

    @Override
    public int getCount() {
        return fragmentListTitles.size();
    }

    @Nullable
    @Override
    public CharSequence getPageTitle(int position) {
        return fragmentListTitles.get(position);
    }

    void addFragment(Fragment fragment, String title){
        fragmentList.add(fragment);
        fragmentListTitles.add(title);
    }
}

I found a possible solution here: FragmentPagerAdapter deprecated But it's in Kotlin.

The warning is on the word: super

//Here
super(fm);

Upvotes: 3

Views: 11927

Answers (2)

Erik Jhordan Rey
Erik Jhordan Rey

Reputation: 748

It's time to start to move on ViewPager2 - https://developer.android.com/jetpack/androidx/releases/viewpager2

Upvotes: 1

ianhanniballake
ianhanniballake

Reputation: 199825

As per the FragmentPagerAdapter constrctor documentation:

This constructor is deprecated. use FragmentPagerAdapter(FragmentManager, int) with BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT

So replace super(fm) with:

super(fm, FragmentPagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);

Upvotes: 11

Related Questions