2016-05-06 2 views
2

Я использую TabLayout из библиотеки Android Design Library. У меня есть несколько вкладок, и каждая вкладка имеет действие, когда оно выбрано. Поэтому у меня есть атрибут startSelection, который выполняетAndroid TabLayout выбрать первую вкладку при запуске

tabLayout.getTabAt(startSelection).select(); 

Это выбирает вкладку и выполняет действие для этой вкладки. Он отлично работает для каждой вкладки, кроме первой, которая автоматически выбирается при запуске без (!) Выполнения действия. У кого-нибудь есть решение для этого?

Я не хочу использовать метод onTabReselected, потому что это вызывает другое поведение TabLayout. Также выбор второй вкладки и выбор первой вкладки после этого не является хорошим решением.

С наилучшими пожеланиями

ответ

1

Я получил его. Решение прост, используйте (один раз) onTabReselected и перезапишите прослушиватель там.

tabLayout.setOnTabSelectedListener(new OnTabSelectedListener() { 

    @Override 
    public void onTabSelected(Tab tab) { 
     selectTab(tab); 
    } 

    private void selectTab(Tab tab) { 
     // do something     
    } 

    @Override 
    public void onTabReselected(Tab tab) { 
     if (tab.getPosition() == 0) { 
      selectTab(tab); 

      tabLayout.setOnTabSelectedListener(new OnTabSelectedListener() { 

       @Override 
       public void onTabSelected(Tab tab) { 
        selectTab(tab); 
       } 

       @Override 
       public void onTabReselected(Tab arg0) {        
       } 

       @Override 
       public void onTabUnselected(Tab arg0) {        
       } 
      }); 

     } 
    } 


    @Override 
    public void onTabUnselected(Tab tab) { 
    } 

}); 
0

Когда вы пытаетесь выбрать первую вкладку грамматически это время ваша инициализация зрения не завершена. Используйте ручку и подождите до 100ms, затем попробуйте выбрать вкладку.

Попробуйте это в onCreate()

new Handler().postDelayed(
    new Runnable(){ 
     @Override 
     public void run() { 
      tabLayout.getTabAt(startSelection).select(); 
     } 
}, 100); 
+1

Привет, процесс инициализации завершен, когда я это делаю. Как я писал, выбор вкладки работает для вкладки 2,3,4 и так далее. Но не для первого, потому что эта вкладка выбрана по умолчанию. Выбор выбранной вкладки не выполняет никаких действий. :( – user2331454

+0

как @ user2331454 указано, это не сработает, потому что .select() будет проигнорирован, потому что startSelection == currentSelected – Bugdr0id