5

पर अपडेट करने के बाद टैबलायआउट क्रैशिंग ViewPager के साथ डिज़ाइन लाइब्रेरी से TabLayout का उपयोग कर रहा हूं, जो उन्हें setupWithViewPager फ़ंक्शन का उपयोग करके लिंक कर रहा है। ऐप परिदृश्यों में क्रैश हो रहा है जहां टैब सामग्री को बदलने के बाद टैब को दोबारा शुरू किया जाता है। क्रैश का पता लगाने:समर्थन लाइब्रेरी को 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) 

दुर्घटना का समर्थन करने के पुस्तकालय 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 में नहीं जोड़ा था। अगली बार जब आप टैबलाउट के साथ एक और गतिविधि दर्ज करेंगे, तो ऐसा होगा।

0

को समर्थन लाइब्रेरी को अपडेट मैं अभी भी समर्थन lib संस्करण में इस समस्या को देख सकते हैं: 25.3.1। तो क्रैश से बचने के लिए, हटाए गए AllTabs() और टैब के लिए एक नया उदाहरण फिर से बनाया और टैबलेट में जोड़ा गया।

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)) 
संबंधित मुद्दे