Vishvendu Palawat
Vishvendu Palawat

Reputation: 576

View pager fragment not invoke when click on tabs?

I have create ViewPager where one tab has QR code reader one tab show the result of scanned qr code. by default result of qr code screen will pop up so when i tab on scan qr code tab I only see the layout of that fragment but the scanner screen doesn't show up. When I make default tab to scanner then only it show the scanner screen. below is my code of view pager..

tabLayout = (TabLayout) findViewById(R.id.bottomNavigation);




    viewPager =(ViewPager)findViewById(R.id.viewPagerHome);
    tabLayout.setupWithViewPager(viewPager);



    viewPager.setOffscreenPageLimit(2);
    view1= (View)findViewById(R.id.view1);
    view2= (View)findViewById(R.id.view2);
    view3= (View)findViewById(R.id.view3);

    //Adding the tabs using addTab() method
    tabLayout.addTab(tabLayout.newTab().setText("Scan"));
    tabLayout.addTab(tabLayout.newTab().setText("Candidate"));
    tabLayout.addTab(tabLayout.newTab().setText("Setting"));
    viewPager = (ViewPager) findViewById(R.id.viewPagerHome);

    //Creating our pager adapter
    adapter = new Pager(getSupportFragmentManager(), tabLayout.getTabCount());

    //Adding adapter to pager
    viewPager.setAdapter(adapter);
    //Adding onTabSelectedListener to swipe views
    tabLayout.setOnTabSelectedListener(this);
    //setUptabIcon();


    tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);



 viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

        }

        @Override
        public void onPageSelected(int position) {


            switch(position){

                case 0:

                   /* ViewPager  viewPager = (ViewPager)findViewById(R.id.viewPagerHome);
                    viewPager.setCurrentItem(0);*/


                    view1.setBackgroundResource(R.color.red  );
                    view2.setBackgroundResource( R.color.white  );
                    view3.setBackgroundResource(R.color.white );
                    break;

                case 1:
                    view1.setBackgroundResource( R.color.white );
                    view2.setBackgroundResource( R.color.red );
                    view3.setBackgroundResource( R.color.white );
                    break;

                case 2:
                    view1.setBackgroundResource( R.color.white  );
                    view2.setBackgroundResource( R.color.white );
                    view3.setBackgroundResource( R.color.red  );
                    break;

                default:
                    view1.setBackgroundResource(R.color.white  );
                    view2.setBackgroundResource( R.color.red );
                    view3.setBackgroundResource( R.color.white  );
                    break;
            }
        }

        @Override
        public void onPageScrollStateChanged(int state) {

        }
    });

  @Override
public void onTabSelected(TabLayout.Tab tab) {
    viewPager.setCurrentItem(tab.getPosition());

    if(tab.getPosition() == 0){


        Fragment childF = new CandidateScanChildFragment();
        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
        transaction.replace(R.id.child_scanfragment_container, childF).commit();

    }
}

ViewPagerAdpater.class

public class Pager extends FragmentStatePagerAdapter {


int tabCount;
FragmentManager mFragmentManager;

private Fragment mFragmentAtPos0;
//FirstPageListener listener = new FirstPageListener();
public Pager(FragmentManager fm, int tabCount) {
    super(fm);
    this.tabCount = tabCount;
}





public Pager(FragmentManager fragmentManager) {
    super(fragmentManager);
    mFragmentManager = fragmentManager;
}





    @Override
public Fragment getItem(int position) {
    switch (position) {

        case 0:
            ScanFragment scanTabFragment = new ScanFragment();
            return scanTabFragment;
        case 1:
            CandidateFragment candidateTabFragment = new CandidateFragment();
            return candidateTabFragment;
        case 2:
            SettingFragment settingtabFragment = new SettingFragment();
            return settingtabFragment;
        default:
            return null;
    }
}



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

@Override public int getItemPosition(Object object) {

    return POSITION_NONE;
}

}

Upvotes: 0

Views: 74

Answers (1)

Akash
Akash

Reputation: 971

Check below code

mPager = (ViewPager) findViewById(R.id.mPager);
tabLayout = (TabLayout) findViewById(R.id.tabLayout);

setupViewPager(mPager);
tabLayout.setupWithViewPager(mPager);

private void setupViewPager(ViewPager viewPager) {
    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
    adapter.addFragment(new RequestFragment(), getString(R.string.requests));
//        adapter.addFragment(new AddedMeFragment(), getString(R.string.added_me));
    adapter.addFragment(new FriendsFragment(), getString(R.string.friends));
    viewPager.setAdapter(adapter);
}


 class ViewPagerAdapter extends FragmentPagerAdapter {
    private final List<Fragment> mFragmentList = new ArrayList<>();
    private final List<String> mFragmentTitleList = new ArrayList<>();

    public ViewPagerAdapter(FragmentManager manager) {
        super(manager);
    }

    @Override
    public Fragment getItem(int position) {
        return mFragmentList.get(position);
    }

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

    public void addFragment(Fragment fragment, String title) {
        mFragmentList.add(fragment);
        mFragmentTitleList.add(title);
    }

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

Upvotes: 0

Related Questions