Подтвердить что ты не робот

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 устарела

Тем не менее, программа, кажется, работает просто отлично. Могу ли я знать, что происходит?

4b9b3361

Ответ 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 над кодами, это ключ для синхронизации.