Android TabLayout使用问题整理
程序员文章站
2022-07-03 12:49:48
1、TabLayout 的 onTabSelected没有被回调的问题。页面加载进来的时候onTabSelected 回调没有被执行。即第一次进入的时候,onTabSelected没有被回调。通过源码分析,当我们执行addTab方法添加Tab的时候,最后会调用到 dispatchTabSelected方法,在dispatchTabSelected方法里面调用addOnTabSelectedListener 的onTabSelected()方法。但是这个时候,mSelectedListeners 为空...
1、TabLayout 的 onTabSelected没有被回调的问题。
页面加载进来的时候onTabSelected 回调没有被执行。即第一次进入的时候,onTabSelected没有被回调。
通过源码分析,当我们执行addTab方法添加Tab的时候,最后会调用到 dispatchTabSelected
方法,在dispatchTabSelected
方法里面调用addOnTabSelectedListener
的onTabSelected()
方法。但是这个时候,mSelectedListeners 为空(因为这个此时我们还没有设置OnTabSelectedListener),因此,就没有回调到onTabSelected。所以
第一次没有执行OnTabSelected回调,是因为我们的代码顺序问题,因此,要想第一次进入的时候回调到OnTabSelected方法,我们应该先设置addOnTabSelectedListener 监听器,再添加Tab。
// 1, 设置 addOnTabSelectedListener
// 设置 addOnTabSelectedListener 必须在 addTab 之前。
mTabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
// 2.添加Tab
mTabLayout.addTab(mTabLayout.newTab().setText("书城"),true);
mTabLayout.addTab(mTabLayout.newTab().setText("音乐"));
mTabLayout.addTab(mTabLayout.newTab().setText("电影"));
2、TabLayout与RecyclerView联动
本文地址:https://blog.csdn.net/LoveShadowing/article/details/107456640
上一篇: P2278 [HNOI2003]操作系统(模拟,优先队列)
下一篇: Java元组学习
推荐阅读
-
基于Android中Webview使用自定义的javascript进行回调的问题详解
-
在android开发中尽量不要使用中文路径的问题详解
-
基于Android SDK-在64位Linux中使用需要注意的问题
-
Android使用TabLayout+Fragment实现顶部选项卡
-
Android 使用volley过程中遇到的问题解决办法
-
解决Android使用Handler造成内存泄露问题
-
Android studio 使用Debugger问题(代码中含有ndk)
-
Android定时器实现的几种方式整理及removeCallbacks失效问题解决
-
新手使用Android Studio会遇到的两个问题和解决办法
-
Android在layout xml中使用ViewStub完成动态加载问题