为什么viewPager.getCurrentItem()返回错误的位置?

时间:2017-03-05 02:57:14

标签: android

mTabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
        @Override
        public void onTabSelected(TabLayout.Tab tab) {
            isSelected = true;
            showChooseTimeLayout();
            int index = viewPager.getCurrentItem();
            Log.d("out", "index:" + index);
            /* 得到当前的fragment,通过接口回调响应fragment的点击事件 */
            MyFragment myFragment = (MyFragment) getSupportFragmentManager().findFragmentByTag("android:switcher:" + R.id.viewPager + ":" + 1);
            myFragment.setOnShowTimeListener(new MyFragment.OnShowTime() {
                @Override
                public void showTime(String time) {
                    mShowTimeTextView.setText(time);
                }
            });
        }

当我点击第一个标签时,此代码int index = viewPager.getCurrentItem();返回“1”,当我点击第二个标签时,它返回“0”,为什么?

1 个答案:

答案 0 :(得分:0)

看起来为TabLayout添加了监听器,但您从ViewPager中提取了所选位置。

这可能有几个原因。

1)确保您以良好的方式连接ViewPagerTabLayout

tabLayout.setupWithViewPager(viewPager);

在这种情况下,您不应该将监听器添加到TabLayout,而应添加ViewPager而不是

2)如果您想要在ViewPagerTabLayout之间分开,请从回拨的tab对象中访问所选位置。

替换

int index = viewPager.getCurrentItem();

使用

int index = tab.getPosition();