GetSupportFragmentManager () undefined in fragment

I am getting an error in getSupportFragmentManager () that "this method is not defined in Fragment" while creating a slider menu with sliding tab i, prepared by the code below.

public class HomeFragment extends Fragment {

    Toolbar toolbar;
    ViewPager viewpager;
    ViewPagerAdapter adapter;
    SlidingTabLayout tabs;
    CharSequence Titles1[] = { "Home", "Help", "Contect" };
    // int Titles[] = { R.drawable.ic_content_copy_black_24dp,
    // R.drawable.ic_refresh_black_24dp, R.drawable.ic_share_black_24dp };
    int NumOfTabs = 3;

    public HomeFragment() {
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.fragment_home, container,
            false);

        return rootView;

        adapter = new ViewPagerAdapter(getSupportFragmentManager(), Titles1,
            NumOfTabs);

        viewpager = (ViewPager) rootView.findViewById(R.id.pager);
        viewpager.setAdapter(adapter);

        tabs = (SlidingTabLayout) rootView.findViewById(R.id.tabs);
        tabs.setDistributeEvenly(true);
    }

      

and my adapter class for ViewPager is below:

public class ViewPagerAdapter extends FragmentStatePagerAdapter{

    CharSequence Titles1[];
    int Titles[];
    int NumbOfTabs;

    public ViewPagerAdapter(FragmentManager fm, CharSequence mTitles[], int mNumbOfTabs) {
        super(fm);
        this.Titles1 = mTitles;
        this.NumbOfTabs = mNumbOfTabs;
    }

    @Override
    public Fragment getItem(int arg0) {

        if(arg0 == 0){
            Tab1 tab1 = new Tab1();
            return tab1;
        }else if(arg0 == 1){
            Tab2 tab2 = new Tab2();
            return tab2;
        }else{
            Tab3 tab3 = new Tab3();
            return tab3;
        }
    }


    @Override
    public CharSequence getPageTitle(int position) {
        return Titles1[position];
    }

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

      

+3


source to share


3 answers


Just replace:

getSupportFragmentManager()

      

from:

getFragmentManager()

      




If you use android.support.v4.app.Fragment

it will return android.support.v4.app.FragmentManager

(SupportFragmentManager)

If you use android.app.Fragment

it will returnandroid.app.FragmentManager




Keep in mind that it is handled differently that in actions. As in android.support.v4.app.FragmentActivity

. There you have getSupportFragmentManager()

andgetFragmentManager()

+2


source


getSupportFragmentManager()

used when your activity

expands FragmentActivity

or AppCompatActivity

. If you are expanding activity

, you need to use getFragmentManager()

.

If you are expanding FragmentActivity

, make sure you import android.support.v4.app.FragmentActivity

.



Also note that getSupportFragmentManager()

is available for android.support.v4.app.Fragment

not android.app.Fragment

.

Also you need to return rootView

at the end onCreateView()

.

+1


source


Are you sure you have the correct import? This one: import android.support.v4.app.Fragment; and not this: import android.app.Fragment;

Edit: Please note that your code after "return rootView" in onCreateView will never be executed because you have returned before.

0


source







All Articles