setOnTabSelectedListener устарела
Я всегда вижу зачеркнутую строку setOnTabSelectedListener для следующего кода
viewPager.setAdapter(adapter);
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
}
}
И показанная ошибка:
setOnTabSelectedListener устарела
Тем не менее, программа, кажется, работает просто отлично. Могу ли я знать, что происходит?
Ответы
Ответ 1
Могу ли я знать, что происходит?
Устаревшее означает, что они решили, что это плохой способ сделать это, или нашли лучший способ сделать это, и этот устаревший метод будет удален в будущем.
Исправление заключается в использовании addOnTabSelectedListener вместо setOnTabSelectedListener.
Это работает почти так же.
Разница в том, что с addOnTabSelectedListener
:
- Вы можете добавить несколько слушателей. С
setOnTabSelectedListener
вы можете иметь только один. - Вы должны удалить слушателя, когда закончите с ним, с помощью removeOnTabSelectedListener.
Общее правило: никогда не используйте устаревшие методы.
Ответ 2
Поскольку setOnTabSelectedListener
устарела, вы можете использовать новый метод
addOnTabSelectedListener(OnTabSelectedListener)
Это изменение позволяет добавить несколько слушателей выбора вкладок к одному TabLayout
.
Ответ 3
Вместо этого используйте коды ниже:
tablayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(viewPager));
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tablayout));
И если вы хотите синхронизировать их при нажатии на вкладках или прокручивании viewpager над кодами, это ключ для синхронизации.