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”,为什么?
答案 0 :(得分:0)
看起来为TabLayout
添加了监听器,但您从ViewPager
中提取了所选位置。
这可能有几个原因。
1)确保您以良好的方式连接ViewPager
和TabLayout
tabLayout.setupWithViewPager(viewPager);
在这种情况下,您不应该将监听器添加到TabLayout
,而应添加ViewPager
而不是
2)如果您想要在ViewPager
和TabLayout
之间分开,请从回拨的tab
对象中访问所选位置。
替换
int index = viewPager.getCurrentItem();
使用
int index = tab.getPosition();