5

我正在使用設計庫中的TabLayoutViewPager,使用函數setupWithViewPager將它們鏈接起來。在標籤內容更改後,該應用在重新創建標籤的情況下崩潰。碰撞痕跡:將支持庫更新到23.2.0後,TabLayout發生崩潰

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) 

崩潰正在更新支持庫23.2.0,不會重現,直到v23.1.1後存在的。

回答

1

我有滿足同樣的問題,然後我找到了新的Tablayout使用池緩存選項卡。 在23.1.1 public Tab newTab() { return new Tab(this); } 和23.2.0 public Tab newTab() { Tab tab = sTabPool.acquire(); if (tab == null) { tab = new Tab(this); } tab.mView = createTabView(tab); return tab; }

所以如果你使用NEWTAB()來創建一個標籤,以及由於某種原因,你沒有把它添加到TableLayout。當你下一次用TabLayout輸入另一個活動時,會發生這種情況。

0

我仍然可以看到支持庫版本這個問題:25.3.1。所以爲了避免崩潰,removeAllTabs()再次爲該選項卡創建了一個新實例並添加到了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))