android开发分享onTabSelected选中未调用

我刚将旧的ActionBar移植到新的TabLayout (支持材质devise)中。

一切都很好,但我不能拦截选项卡select方法onTabSelected只被称为第一次TabLayout显示,但是当单击标签时,没有任何反应! 任何想法这个代码有什么问题?

  tabLayout = (TabLayout) findViewById(R.id.tabs); tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE); mViewPager = (ViewPager) findViewById(R.id.pager); if (mViewPager != null) { setupViewPager(); } tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { @Override public void onTabSelected(TabLayout.Tab tab) { numTab = tab.getPosition(); prefs.edit().putInt("numTab", numTab).apply(); } @Override public void onTabUnselected(TabLayout.Tab tab) { } @Override public void onTabReselected(TabLayout.Tab tab) { } }); tabLayout.setupWithViewPager(mViewPager); 

    当你调用setupWithViewPager ,这将在内部调用setOnTabSelectedListener(new ViewPagerOnTabSelectedListener(viewPager)); ,覆盖你的OnTabSelectedListener

    相反,您的监听器应该扩展TabLayout.ViewPagerOnTabSelectedListener ,然后覆盖onTabSelected()并在setOnTabSelectedListener()之后调用setupWithViewPager()

     tabLayout.setupWithViewPager(mViewPager); tabLayout.setOnTabSelectedListener( new TabLayout.ViewPagerOnTabSelectedListener(mViewPager) { @Override public void onTabSelected(TabLayout.Tab tab) { super.onTabSelected(tab); numTab = tab.getPosition(); prefs.edit().putInt("numTab", numTab).apply(); } }); 

    这是一个有三个选项卡的更完整的例子。 它使用较新的add OnTabSelectedListener而不是set OnTabSelectedListener

     TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout); tabLayout.addTab(tabLayout.newTab().setText("Tab 1")); tabLayout.addTab(tabLayout.newTab().setText("Tab 2")); tabLayout.addTab(tabLayout.newTab().setText("Tab 3")); tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); final ViewPager viewPager = (ViewPager) findViewById(R.id.pager); final PagerAdapter adapter = new PagerAdapter (getSupportFragmentManager(), tabLayout.getTabCount()); viewPager.setAdapter(adapter); viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { @Override public void onTabSelected(TabLayout.Tab tab) { viewPager.setCurrentItem(tab.getPosition()); Log.i("TAG", "onTabSelected: " + tab.getPosition()); } @Override public void onTabUnselected(TabLayout.Tab tab) { Log.i("TAG", "onTabUnselected: " + tab.getPosition()); } @Override public void onTabReselected(TabLayout.Tab tab) { Log.i("TAG", "onTabReselected: " + tab.getPosition()); } }); 

    笔记:

    以上就是android开发分享onTabSelected选中未调用相关内容,想了解更多android开发(异常处理)及android游戏开发关注计算机技术网(www.ctvol.com)!)。

      www.ctvol.com true Article android开发分享onTabSelected选中未调用

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/addevelopment/512617.html

      (0)
      上一篇 2020年11月27日 上午10:51
      下一篇 2020年11月27日 上午10:55

      精彩推荐