【问题标题】:View pager fragment not invoke when click on tabs?单击选项卡时不调用查看寻呼机片段?
【发布时间】:2017-06-21 07:05:50
【问题描述】:

我创建了 ViewPager,其中一个标签有二维码阅读器,一个标签显示扫描二维码的结果。默认情况下,会弹出二维码屏幕的结果,因此当我在扫描二维码选项卡上进行选项卡时,我只会看到该片段的布局,但扫描仪屏幕不会显示。 当我将默认选项卡设置为扫描仪时,它只会显示扫描仪屏幕。 下面是我的视图寻呼机代码..

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;
}

@覆盖 公共 int getItemPosition(对象对象) {

    return POSITION_NONE;
}

}

【问题讨论】:

    标签: android android-fragments android-viewpager


    【解决方案1】:

    检查下面的代码

    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);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2015-02-27
      • 1970-01-01
      • 1970-01-01
      • 2020-07-19
      • 2013-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多