我刚刚将旧的迁移ActionBar到了新的TabLayout(支持材料设计).
一切都很棒,但我无法截取选项卡选择该方法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);
Run Code Online (Sandbox Code Playgroud)
ian*_*ake 95
当你打电话时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();
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24221 次 |
| 最近记录: |