2016-03-30 11 views
1

, ayrıca, ben TabReselected olayı dinlemek zorunda, ama onlar çatışma gibi görünüyor:TabLayout'ın setOnTabSelectedListener, setupWithViewPager ile çakışıyor mu? Ben ViewPager ile TabLayout kullanmak

mViewPager.setAdapter(...); 
mTabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
      @Override 
      public void onTabSelected(TabLayout.Tab tab) { 
       Toast.makeText(getActivity(), "selected...", Toast.LENGTH_LONG).show(); 
      } 

      @Override 
      public void onTabUnselected(TabLayout.Tab tab) { 

      } 

      @Override 
      public void onTabReselected(TabLayout.Tab tab) { 
       Toast.makeText(getActivity(), "reselected...", Toast.LENGTH_LONG).show(); 
      } 
}); 
mTabLayout.setupWithViewPager(mViewPager); 

ben setupWithViewPager (mViewPager) kullandığınızda, Dinleyici irade önce eklenen görünüyor geçersiz ol. Anahtar, sekme [[tekrar seçildi]] olduğunda başka şeylere ihtiyacım var, ama nasıl? o kurulum için zaman alır gibi

cevap

1

// viewpager ile çalıştırılabilir kullanın:

viewPager.setAdapter(viewpagerAdapter); 
    tabLayout.post(new Runnable() { 
     @Override 
     public void run() { 
      tabLayout.setupWithViewPager(viewPager); 

      tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
       @Override 
       public void onTabSelected(TabLayout.Tab tab) { 

        Toast.makeText(MainActivity.this, "selected...", Toast.LENGTH_LONG).show(); 
       } 

       @Override 
       public void onTabUnselected(TabLayout.Tab tab) { 

       } 

       @Override 
       public void onTabReselected(TabLayout.Tab tab) { 

        Toast.makeText(MainActivity.this, "reselected...", Toast.LENGTH_LONG).show(); 
       } 
      }); 
     } 
    }); 
+0

Evet, işe yarıyor. ama yan etkiler ortaya çıkıyor. ViewPager'ı kaydırdığımda her şey yolunda; Ancak, sekmeyi tıklarsam, normal olarak içeriği değiştirir, ancak burada onTabSelected işlevinde "viewPager.setCurrentItem (tab.getPosition()" ifadesini çağırmak zorundayız, işte bu şekilde yaparsak, onTabReselected işlevi –

0

Ne yapmak gerek olduğunu öncelikle onTabSelected() yönteminde sonra

tabLayout.setupWithViewPager(onBoardVP); 

Ve çağırmanız gerekir, Bunun gibi mViewPager.setCurrentItem(tab.getPosition());

ekleyin:

@Override 
       public void onTabSelected(TabLayout.Tab tab) { 

        Toast.makeText(MainActivity.this, "selected...", Toast.LENGTH_LONG).show(); 
mViewPager.setCurrentItem(tab.getPosition()); 
       } 
+0

@Spykaran da doğrudur, bazı yan etkiler olsa da, soruyu yazdığım gibi, 'tabLayout.setupWithViewPager (onBoardVP);' önceden ayarlanmış setOnTabSelectedListener işlenmeyecek. 'setWithViewPager' sonra 'setOnTabSelectedListener' kullanırsak, 'setupWithViewPager' işe yaramayacak gibi görünüyor. Belki de net değilim, thx –

+0

Evet. Eğer setupWithViewPager() tabLayout.setOnTabSelectedListener() ayarlanmadan önce yürütülürse, setupWithViewPager() işe yaramaz. viewpager'da geçiş yapmazsınız. Bu nedenle, sekme dokunma üzerinde anahtarlama çalışması yapmak için mViewPager.setCurrentItem (tab.getPosition()) öğesini, onTabSelected() yönteminin içine koydum. –

İlgili konular