Search code examples
javaandroidandroid-viewpagerfragment

Unable to call getSupportFragmentMangager for a Viewpager within a fragment


I am trying to place a ViewPager, which has several fragments as pages, inside a parent fragment.

I see there are a few threads about this have have not found any that fix the issue I'm having.

I have tried the following: getFragmentManager getChildFragmentManager getActivity().getSupportFragmentManager (AppCompatActivity(getActivity())).getFragmentManager

While getActivity does work, then my other methods become "unreachable" and I have no idea why.

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_home, container, false);
    return view;

    initViews (view);
    Utils.getInstance(getActivity());

    CheckItemNull();


    myTabLO.addTab(myTabLO.newTab().setText("Tab 1"));
    myTabLO.addTab(myTabLO.newTab().setText("Tab 2"));
    myTabLO.addTab(myTabLO.newTab().setText("Tab 3"));
    myTabLO.addTab(myTabLO.newTab().setText("Tab 4"));
    myTabLO.addTab(myTabLO.newTab().setText("Tab 5"));
    myTabLO.setTabGravity(TabLayout.GRAVITY_FILL);



    myVPAdatper = new MyVPAdapter(getActivity().getSupportFragmentManager(), myTabLO.getTabCount());
    myVP.setAdapter(myVPAdatper);
    myVP.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(myTabLO));

    myTabLO.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
        @Override
        public void onTabSelected(TabLayout.Tab tab) {
            myVP.setCurrentItem(tab.getPosition());
        }

        @Override
        public void onTabUnselected(TabLayout.Tab tab) {

        }

        @Override
        public void onTabReselected(TabLayout.Tab tab) {

        }

    });

Solution

  • Hum, I'm still new to code, but i think the keyword from the method should be in the end of the code not in the beginning, because when the compiler read the code it finishes the process after reading the keyword "return" if the method has one.

    I think that you are getting the fragmentManager wrong too. Instead of:

    getActivity().getSupportFragmentManager()

    Use just!

    getSupportFragmentManager()

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    
        View view = inflater.inflate(R.layout.fragment_home, container, false);
    
        initViews (view);
        Utils.getInstance(getActivity());
    
        CheckItemNull();
    
    
        myTabLO.addTab(myTabLO.newTab().setText("Tab 1"));
        myTabLO.addTab(myTabLO.newTab().setText("Tab 2"));
        myTabLO.addTab(myTabLO.newTab().setText("Tab 3"));
        myTabLO.addTab(myTabLO.newTab().setText("Tab 4"));
        myTabLO.addTab(myTabLO.newTab().setText("Tab 5"));
        myTabLO.setTabGravity(TabLayout.GRAVITY_FILL);
    
    
        myVPAdatper = new MyVPAdapter(getSupportFragmentManager(), myTabLO.getTabCount());
    
        myVP.setAdapter(myVPAdatper);
    
        myVP.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(myTabLO));
    
        myTabLO.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                myVP.setCurrentItem(tab.getPosition());
            }
    
            @Override
            public void onTabUnselected(TabLayout.Tab tab) {
    
            }
    
            @Override
            public void onTabReselected(TabLayout.Tab tab) {
    
            }
           return view;
        });
    

    GIVE A TRY!