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

Android 为什么viewPager.getCurrentItem()返回错误的位置?,android,Android,当我单击第一个选项卡时,这个代码int index=viewPager.getCurrentItem()返回“1”,当我单击第二个选项卡时,它返回“0”,为什么?看起来您为表格布局添加了侦听器,但您从查看页面中提取了所选位置 这可能有两个原因 1) 确保ViewPager和TabLayout连接良好 mTabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { @Override

当我单击第一个选项卡时,这个代码
int index=viewPager.getCurrentItem()返回“1”,当我单击第二个选项卡时,它返回“0”,为什么?

看起来您为
表格布局添加了侦听器,但您从
查看页面中提取了所选位置

这可能有两个原因

1) 确保
ViewPager
TabLayout
连接良好

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);
                }
            });
        }
在这种情况下,不应将侦听器添加到
表格布局
,而应添加到
查看页面

2) 如果您想在
ViewPager
TabLayout
之间进行分离,请从回调中的
选项卡
对象访问所选位置

替换

tabLayout.setupWithViewPager(viewPager);


索引是从0开始计算的。但是第一个选项卡不返回“0”,第二个选项卡不返回“1”吗?对不起。我认为您应该使用
viewPager.setOnPageChangeListener
来获取viewPager的当前项。谢谢。您的方法可以。
int index = viewPager.getCurrentItem();
int index = tab.getPosition();