当前位置: 首页 > 知识库问答 >
问题:

点击选项卡时不调用查看分页器片段?

皇甫鸿远
2023-03-14

我已经创建了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;
}
    return POSITION_NONE;
}

共有1个答案

沙星波
2023-03-14

检查下面的代码

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);
    }
}
 类似资料:
  • 通过 UIWebView 加载网页,然后结合 JS 代码实现点击网页中图片,让图片从最初位置动画过渡到全屏显示图片。 [Code4App.com]

  • 我对tabView有问题。第一个选项卡应始终显示相同的内容(称为搜索模板,用#{not curSearch.isClosable()}标识)。所有其他选项卡都是搜索实例(用#{curSearch.isClosable()}标识) 代码如下: 不幸的是,在第一个选项卡上有一些被称为curSearch对象的方法,这些方法仅在第二个选项卡和后面的选项卡上使用。如果我不使用ui:insert,它不会改变任

  • 我已经在我的片段中重写了以下方法:setUserVisibleHint 在fragment类中,变量设置为:private var isLoadOnce=false。 我有3个片段,问题是当我的活动popsup时,第一个片段是可见的,如果我单击最后一个选项卡,也就是第三个选项卡加载第三个片段,什么也不会发生,即web服务根本不会调用。

  • 我有一个视页,有3个标签在里面。所有三个选项卡都有它们的片段。我注意到,当我将adapter设置为ViewPager时,每个片段数据都是在第一次加载的。 我需要的是只有当特定的标签被点击时才加载相应标签的片段数据。

  • 我正在尝试在我的网站上做一个标签功能,我希望有那个标签响应。所以我做了这样的代码: null null 现在我有两样东西, > 首先,我希望在单击标题(伦敦、巴黎、东京)时关闭选项卡,然后在单击该标题时从该标题中删除活动类。 其次,我希望有两个标签在行的响应,第三个标签在第二行,然后单击打开被点击的标签,然后向下推第三个标签。 任何提示都会有帮助,提前谢谢

  • 在jQuery中创建选项卡。单击其他选项卡时,所有选项卡都将消失。我想不出解决办法 以下是无法正常工作的页面:http://www.sleepfullnights.com/products/sfn-537 这是另一个用它工作的人的JSFIDLE:http://jsfiddle.net/gravitybox/7pHg4/我已经复制并粘贴了其中的每个元素到页面中,问题仍然存在。 一个人指出,当点击标签