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)) 
相关问题