2012-05-14 18 views
5

मैं अपने आवेदन में शेरलॉक एक्शन बार का उपयोग करता हूं। मैंने अपने मेनू में "ifRoom | withText" सुविधा का उपयोग किया। अगर मैं पोर्ट्रेट मोड में अपने कोड का परीक्षण करता हूं, तो मैं केवल आइकन देख सकता हूं और यदि मैं अभिविन्यास को परिदृश्य में घुमाता हूं, फिर भी मैं केवल आइकन देखता हूं। दूसरी तरफ, यदि मैं परिदृश्य के साथ भागता हूं, तो मैं चित्र और परिदृश्य पर टेक्स्ट और आइकन देख सकता हूं। इसका मतलब है कि जब स्क्रीन घुमाया जाता है, तो एक्शन बार रीफ्रेश नहीं होता है। मैं कैसे ठीक कर सकता हूं?अभिविन्यास बदलते समय एक्शनबार स्केरलॉक रीफ्रेश नहीं किया जाता है

मेनू में, मैं

android:showAsAction="ifRoom|withText" 

इसके अलावा, मैं तय

android:configChanges="keyboardHidden|orientation|screenSize" 

करने के लिए अपने मैनिफ़ेस्ट फ़ाइल में इस लाइन का इस्तेमाल किया, लेकिन यह काम नहीं किया है। और मैं अपने कोड एंड्रॉयड 2.3

इसके अलावा मैं अपने गतिविधि में टुकड़ा इस्तेमाल किया,

 FragmentManager fm = getSupportFragmentManager(); 
    ft = fm.beginTransaction(); 

    mFragment1 = fm.findFragmentByTag("f1"); 

    if (mFragment1 == null) { 

     mFragment1 = new MenuFragment(); 
     ft.add(mFragment1, "f1"); 

    } 

    ft.commit(); 

उत्तर

6

विन्यास हैंडलिंग पर ActionBar मेनू फिर से बनाना पड़ेगा एक्शनबैरशेलॉक के साथ परिवर्तन समर्थित नहीं है।

प्री-आईसीएस पर, एक्शनबारशेलॉक मूल क्रिया पट्टी की तरह सजावट दृश्य का हिस्सा नहीं है और इसलिए आपकी सामग्री दृश्य के समान प्रतिबंधों के अधीन है। कॉन्फ़िगरेशन परिवर्तनों को संभालने से आप पुस्तकालय को परिवर्तन के अनुकूल होने की अनुमति नहीं दे रहे हैं और इसलिए गलत प्रदर्शन या कुछ हिस्सों को देखेंगे।

एंड्रॉइड प्रलेखन कॉन्फ़िगरेशन परिवर्तनों को संभालने से भी हतोत्साहित करता है। उन सभी लागतों से बचें, खासकर जब एक्शनबैरशॉक का उपयोग करते हैं।

संबंधित नोट पर, मैं अभी भी लाइब्रेरी के भविष्य के संस्करणों के लिए इस पर काम करने की कोशिश कर रहा हूं लेकिन अब से बचने की अनुशंसा की जाती है।

+0

समस्या कहां है मेरे पास कुछ कोड है जो मेरी ऑनस्ट्राय विधि में बैठा है, लेकिन मैंने अभी एबीएस जोड़ा है, जो अब घुमाए जाने पर डेस्ट्रॉय पर कॉल करता है। क्या आपको लगता है कि बैक बटन के लिए हैंडलर में उस कोड को स्थानांतरित करना मेरी सबसे अच्छी शर्त है? धन्यवाद – Matt

+0

जब तक आपको सुपरक्लास विधि को कॉल करना याद है, तब तक आपको 'ऑनस्ट्रोय' ओवरराइड करने का स्वागत है। –

+0

मैं यह उल्लेख करना भूल गया कि मैं पहले घूमने पर गतिविधियों को नष्ट नहीं कर रहा था। इसलिए मैंने कोड को बजाय बैकप्रेस विधि पर ले जाया। – Matt

0

चलाने मुझे लगता है कि आप config परिवर्तन

invalidateOptionsMenu(); 
+0

उत्तर के लिए धन्यवाद, मैंने कॉन्फ़िगरेशन में आपके फ़ंक्शन को आजमाया लेकिन यह काम नहीं किया। क्या आपके पास कोई अन्य विचार है? – SavasCinar

+0

मेरा एकमात्र अन्य सुझाव समर्थन का प्रयास करना होगा IvalidateOptionsMenu(); – Tony

+0

धन्यवाद टोनी, लेकिन फिर भी इसका कोई प्रभाव नहीं पड़ा। मुझे नहीं पता, – SavasCinar

संबंधित मुद्दे