5

Używam TabLayout z biblioteki projektowej z ViewPager, łącząc je za pomocą funkcji setupWithViewPager. Aplikacja ulega awarii w scenariuszach, w których odtwarza karty po zmianie zawartości karty. Zawieszanie ślad:Zawieszenie TabLayout po aktualizacji biblioteki pomocy technicznej do 23.2.0

java.lang.IllegalArgumentException: Tab belongs to a different TabLayout. 
at android.support.design.widget.TabLayout.addTab(TabLayout.java:433) 
at android.support.design.widget.TabLayout.populateFromPagerAdapter(TabLayout.java:772) 
at android.support.design.widget.TabLayout.setPagerAdapter(TabLayout.java:763) 
at android.support.design.widget.TabLayout.setupWithViewPager(TabLayout.java:715) 

Katastrofa jest występujących po aktualizacji do obsługi biblioteki 23.2.0, nie reprodukować do v23.1.1.

Odpowiedz

1

mam spotkać ten sam problem, a potem okazało się, że nowsze Tablayout skorzystać z basenu buforować Tab. w 23.1.1 public Tab newTab() { return new Tab(this); } aw 23.2.0 public Tab newTab() { Tab tab = sTabPool.acquire(); if (tab == null) { tab = new Tab(this); } tab.mView = createTabView(tab); return tab; }

więc jeśli używasz newtab(), aby utworzyć zakładkę iz jakiegoś powodu nie dodać go do TableLayout. następnym razem, gdy wprowadzisz inną czynność za pomocą TabLayout, stanie się to.

0

nadal widzę ten problem na poparcie wersji lib: 25.3.1. Aby więc uniknąć awarii, removedAllTabs() i ponownie stworzył nowe wystąpienie dla karty i dodano do Tablayout.

gauge_tab.removeAllTabs() 
gauge_tab.addTab(gauge_tab.newTab().setText(R.string.flash_gauge_04)) 
gauge_tab.addTab(gauge_tab.newTab().setText(R.string.flash_gauge_06)) 
gauge_tab.addTab(gauge_tab.newTab().setText(R.string.flash_gauge_08))