2016-07-21 2 views
44

Я скопировал код с другого сайта. Странно то, что я всегда вижу эту прочерк линию (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 осуждается

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

ответ

130

Могу ли я знать, что происходит?

Устаревшее означает, что они решили, что это не лучший способ сделать это, или они нашли лучший способ сделать это, и этот устаревший метод будет удален в будущем.

Исправление состоит из addOnTabSelectedListener вместо setOnTabSelectedListener.
Он работает почти так же.

Разница заключается в том, что с addOnTabSelectedListener:

  • вы можете добавить несколько слушателей. С setOnTabSelectedListener у вас может быть только один.
  • вы должны удалить слушателя, когда закончите с ним, с removeOnTabSelectedListener.

Общее правило: никогда не используют устаревшие методы.

+0

upvote для подробного ответа, охватывающего все точки, но я думаю, что «исправить это использовать addOnTabSelectedListener» должно быть выделено жирным шрифтом, чтобы быстро найти ответ –

+7

@ShirishHerwade. Моя цель - не предоставлять быстрый ответ, но дать полный ответ. Я думаю, что объяснение так же важно, как и решение :-) –

+0

Thank @Tim Castelijns это helpfu, но когда я должен использовать removeOnTabSelectedListener.? это на onTabUnselected или onTabReselected? – eLi

18

Поскольку этот метод drepecatad теперь вы можете использовать новый метод

addOnTabSelectedListener(OnTabSelectedListener) 

На самом деле это изменение позволит добавить несколько слушателя TabSelected к одному TabLayout.

+0

Любой сценарий использования для нескольких слушателей? – Talha

+0

Что это значит? Для добавления нескольких слушателей просто добавьте каждого слушателя с помощью этого метода – Chol

0

Использование ниже кодов вместо:

tablayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(viewPager)); 
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tablayout)); 

И если вы хотите, чтобы синхронизировать их при нажатии на вкладках или проводя ViewPager выше коды являются ключом для синхронизации.

Смежные вопросы