TabLayout 迁移到 AndroidX
TabLayout migration to AndroidX
我已使用重构->迁移到 AndroidX 将我的 Android 应用程序迁移到 AndroidX。
还修复了需要手动修复的问题。剩下的唯一问题是 TabLayout
.
以前,在 AndroidX 迁移之前,我使用此代码:
@Override
public void setOnTabSelectedListener(OnTabSelectedListener onTabSelectedListener) {
......
super.setOnTabSelectedListener(onTabSelectedListener);
}
@Override
void selectTab(Tab tab) {
........
super.selectTab(tab);
}
但是使用 AndroidX,在构建时我遇到了这个错误:
方法不覆盖或实现超类型的方法
和
selectTab(com.google.android.material.tabs.TabLayout.Tab)
不是 public。无法从外部包访问..
我怎样才能正确地将它迁移到 AndroidX?
编辑:
忘了说我有自己的选项卡 class,我只是扩展了 TabLayout
。我已经覆盖了 selectTab
,因为我不想在调用父 selectTab()
之前对它做任何事情。在 AndroidX 中,selectTab
不再是 public,那么我怎样才能覆盖它先做一些事情呢?
AndroidX
之前的工作代码
@Override
void selectTab(Tab tab) {
//if condition met, return;
super.selectTab(tab);
}
首先初始化TabLayout:
private TabLayout tabLayout;
然后在onCreate中:
tabLayout = findViewById(R.id.your_tab_layout_id)
然后像这样添加监听器:
tabLayout.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) {
}
});
您可以使用selectTab
方法:
TabLayout tabLayout = findViewById(R.id.tab_layout);
tabLayout.selectTab(tabLayout.getTabAt(index));
关于监听器你可以使用addOnTabSelectedListener
tabLayout.addOnTabSelectedListener(OnTabSelectedListener);
如果您使用自定义 TabLayout
只需使用:
@Override
public void selectTab(@Nullable Tab tab) {
//your code....
super.selectTab(tab);
}
我已使用重构->迁移到 AndroidX 将我的 Android 应用程序迁移到 AndroidX。
还修复了需要手动修复的问题。剩下的唯一问题是 TabLayout
.
以前,在 AndroidX 迁移之前,我使用此代码:
@Override
public void setOnTabSelectedListener(OnTabSelectedListener onTabSelectedListener) {
......
super.setOnTabSelectedListener(onTabSelectedListener);
}
@Override
void selectTab(Tab tab) {
........
super.selectTab(tab);
}
但是使用 AndroidX,在构建时我遇到了这个错误: 方法不覆盖或实现超类型的方法
和
selectTab(com.google.android.material.tabs.TabLayout.Tab)
不是 public。无法从外部包访问..
我怎样才能正确地将它迁移到 AndroidX?
编辑:
忘了说我有自己的选项卡 class,我只是扩展了 TabLayout
。我已经覆盖了 selectTab
,因为我不想在调用父 selectTab()
之前对它做任何事情。在 AndroidX 中,selectTab
不再是 public,那么我怎样才能覆盖它先做一些事情呢?
AndroidX
之前的工作代码@Override
void selectTab(Tab tab) {
//if condition met, return;
super.selectTab(tab);
}
首先初始化TabLayout:
private TabLayout tabLayout;
然后在onCreate中:
tabLayout = findViewById(R.id.your_tab_layout_id)
然后像这样添加监听器:
tabLayout.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) {
}
});
您可以使用selectTab
方法:
TabLayout tabLayout = findViewById(R.id.tab_layout);
tabLayout.selectTab(tabLayout.getTabAt(index));
关于监听器你可以使用addOnTabSelectedListener
tabLayout.addOnTabSelectedListener(OnTabSelectedListener);
如果您使用自定义 TabLayout
只需使用:
@Override
public void selectTab(@Nullable Tab tab) {
//your code....
super.selectTab(tab);
}