स्वाइप करते समय टैब परिदृश्य में नहीं बदलेगा मेरे पास एक स्क्रीन है जो ViewPager + actionbar शेरलॉक टैब का उपयोग करती है। मैं पेजर पर एक setOnPageChangeListener
सेट है और यह निम्नलिखित है:एक्शनबार शेरलॉक -
@Override
public void onPageSelected(final int position) {
actionBar.setSelectedNavigationItem(position);
}
यह पोर्ट्रेट मोड में और यहां तक कि परिदृश्य में अगर मैं केवल कुछ टैब है और सभी टैब प्रदर्शित किए जाते हैं बस ठीक काम करता है। हालांकि अगर मैं परिदृश्य में कुछ और टैब जोड़ता हूं, तो ये एक ड्रॉप-डाउन विजेट में पतन हो जाते हैं। जब मैं ViewPager के माध्यम से पृष्ठ setSelectedNavigationItem
विधि निष्पादित किया जाता है लेकिन अब इसका ड्रॉप-डाउन चयन पर कोई प्रभाव नहीं पड़ता है: यह अंतिम चयनित मान पर रहता है। जो वास्तव में खराब है क्योंकि उपयोगकर्ता में दृश्य सुराग गुम है: टैब "वन" कह सकता है लेकिन उपयोगकर्ता पहले से ही पृष्ठ # 6 पर है।
क्या स्थिति के आधार पर प्रदर्शित करने के लिए प्रोग्राम को बदलने के लिए कोई तरीका है?
पीएस मैं जानता हूँ कि ऐसा क्यों होता है: यहाँ com.android.internal.app.ActionBarImpl से कोड है:
public void setSelectedNavigationItem(int position) {
switch (mActionView.getNavigationMode()) {
case NAVIGATION_MODE_TABS:
selectTab(mTabs.get(position));
break;
case NAVIGATION_MODE_LIST:
mActionView.setDropdownSelectedPosition(position);
break;
default:
throw new IllegalStateException(
"setSelectedNavigationIndex not valid for current navigation mode");
}
}
और जब मुझे लगता है कि के माध्यम से कदम मैं देख सकता हूँ कि नेविगेशन मोड में अभी भी NAVIGATION_MODE_TABS है, हालांकि टैब सूची के रूप में प्रदर्शित कर रहे हैं। अब - मेरा घुटने झटका प्रतिक्रिया कोड को कोड में रखना है कॉन्फ़िगरेशन नेविगेशन मोड को उचित रूप से सेट करने के लिए बदल दिया गया है, लेकिन यह स्वचालित रूप से नहीं होना चाहिए?
पी.पी.एस. और वहाँ है Android bug इसके लिए दायर की पहले से ही है कि पैच
यह समाधान मूल एक्शनबार के लिए काम करता है लेकिन संगतता (एक जिंजरब्रेड एमुलेटर पर) के लिए काम नहीं करता है। यह कैसे तय किया जा सकता है? –
धन्यवाद! यह निश्चित रूप से काम करता है :-) –
धन्यवाद! अंततः एक कामकाजी समाधान मिला। – Ahmad