5

Ich verwende TabLayout aus der Design-Bibliothek mit der ViewPager, verknüpfen sie mit der Funktion setupWithViewPager. Die App stürzt in Szenarien ab, in denen die Registerkarten neu erstellt werden, nachdem der Tab-Inhalt geändert wurde. Crash-Trace:TabLayout Absturz nach dem Aktualisieren der Support-Bibliothek auf 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) 

Der Absturz wird auftreten, nachdem die Aktualisierung Bibliothek 23.2.0 zu unterstützen, wird nicht bis v23.1.1 reproduzieren.

Antwort

1

i zu erfüllen haben das gleiche Problem, und dann fand ich die neuere Tablayout einen Pool verwenden zwischenzuspeichern Tab. in 23.1.1 public Tab newTab() { return new Tab(this); } und in 23.2.0 public Tab newTab() { Tab tab = sTabPool.acquire(); if (tab == null) { tab = new Tab(this); } tab.mView = createTabView(tab); return tab; }

so, wenn Sie newtab() verwenden einen Tab, und aus irgendeinem Grunde schaffen Sie es an das Tablelayout nicht hinzufügen. Wenn Sie das nächste Mal eine andere Aktivität mit einem TabLayout eingeben, würde dies passieren.

0

ich dieses Problem weiterhin in Unterstützung lib Version sehen kann: 25.3.1. Um den Absturz zu vermeiden, entfernte removeAllTabs() und erstellte erneut eine neue Instanz für die Registerkarte und fügte sie Tablayout hinzu.

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)) 
Verwandte Themen