Skip to content Skip to sidebar Skip to footer

How To Combine Bottomnavigationview And Viewpager?

I need help to combine ViewPager and BottomNavigationView. But when I swipe the screen as ViewPager works, the fragment become stacked with another fragment. How do I fix this? Sta

Solution 1:

Change this code in MainActivity

@OverridepublicbooleanonNavigationItemSelected(@NonNull MenuItem menuItem) {

    switch (menuItem.getItemId()) {
        case R.id.menu_home:
            viewPager.setCurrentItem(0);
            break;
        case R.id.menu_favorite:
            viewPager.setCurrentItem(1);
            break;
        case R.id.menu_account:
            viewPager.setCurrentItem(2);
            break;
    }
    returntrue;
}

Add this code for select bottomNavigation Tab.

viewPager.addOnPageChangeListener(newViewPager.OnPageChangeListener() {
            @OverridepublicvoidonPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @OverridepublicvoidonPageSelected(int position) {
                switch (position) {
                    case0:
                        mBottomNavigation.getMenu().findItem(R.id.menu_home).setChecked(true);
                        break;
                    case1:
                        mBottomNavigation.getMenu().findItem(R.id.menu_favorite).setChecked(true);
                        break;
                    case2:
                        mBottomNavigation.getMenu().findItem(R.id.menu_account).setChecked(true);
                        break;
                }
            }

            @OverridepublicvoidonPageScrollStateChanged(int state) {

            }
        });

Solution 2:

As the answer of Mr. @Chintan , I replaced :

returnnewFooFragment();

to

viewPager.setCurrentItem(index);

And remove loadFragment() function, it's perfectly works now. Thank you very much!

Post a Comment for "How To Combine Bottomnavigationview And Viewpager?"