5

Sto utilizzando TabLayout dalla libreria di progettazione con ViewPager, collegandoli utilizzando la funzione setupWithViewPager. L'app si arresta in modo anomalo in scenari in cui ricrea le schede, dopo che i contenuti della scheda sono stati modificati. traccia Crash:TabLayout in arresto anomalo dopo l'aggiornamento della libreria di supporto a 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) 

L'incidente è in corso dopo l'aggiornamento per supportare biblioteca 23.2.0, non si riproduce fino v23.1.1.

risposta

1

ho incontrare lo stesso problema, e poi ho trovato il più recente Tablayout utilizzare un pool di cache Tab. in 23.1.1 public Tab newTab() { return new Tab(this); } e 23.2.0 public Tab newTab() { Tab tab = sTabPool.acquire(); if (tab == null) { tab = new Tab(this); } tab.mView = createTabView(tab); return tab; }

quindi se si utilizza newtab() per creare una scheda, e per qualche motivo non hai aggiungerlo alla TableLayout. la prossima volta che inserirai un'altra attività con un TabLayout, ciò accadrebbe.

0

posso ancora vedere questo problema in supporto versione lib: 25.3.1. Quindi, per evitare il crash, removedAllTabs() e creato una nuova istanza per la scheda di nuovo e aggiunto a 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))