Reputation: 576
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
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