2011-10-05 11 views
27

यह Activities के लिए स्पष्ट है - मेनू दिखाए जाने से ठीक पहले विधि को बुलाया जा रहा है। लेकिन ActionBar के बारे में क्या है जब यह हमेशा दिखाया गया है? menuItems गतिशील रूप से अद्यतन करने के लिए इसे कैसे शुरू किया जाए?एक्शनबार के लिए कब और कितनी बार PrepareOptionsMenu() विधि कहा जाता है?

+0

आप आइटम को कुशलतापूर्वक सक्षम/अक्षम करने या अन्यथा गतिशील रूप से सामग्री को संशोधित करने के लिए PrepareOptionsMenu() विधि का उपयोग कर सकते हैं। – Nepster

उत्तर

53

दस्तावेज़ द्वारा सुझाए गए PrepareOptionMenu() विधि को ट्रिगर करने के लिए अवैध optionsMenu() का उपयोग करें।

On Android 3.0 and higher, you must call invalidateOptionsMenu() when you want to update the menu, because the menu is always open. The system will then call onPrepareOptionsMenu() so you can update the menu items.

+0

यदि आप एक्शनबैरशेलॉक का उपयोग कर रहे हैं तो आप गतिविधि विधि का उपयोग कर सकते हैं: supportInvalidateOptionsMenu(); यदि आप एक टुकड़े में हैं, तो getActivity() पर कॉल करें। SupportInvalidateOptionsMenu(); बजाय – edrian

0

नोट आपके मिनट SDK संस्करण हनीकोम्ब की तुलना में कम है अगर (उर्फ एंड्रॉयड 3.0 उर्फ ​​एपीआई स्तर 11), और आप ActionBarActivity उपयोग कर रहे हैं आप supportInvalidateOptionsMenu() invalidateOptionsMenu का समर्थन पुस्तकालय संस्करण है (कॉल कर सकते हैं)।

यदि आपका मेनू ऑनरीट() में आने वाले इरादे के आधार पर बदलता है, तो आप ऑनपेरऑप्शनमेनू() में अपडेट कर सकते हैं, यदि आप गतिशील रूप से गतिविधियों को जीवन चक्र में बदलते हैं तो आपको invalideOptionsMenu को कॉल करना होगा, या supportInvalidateOptionsMenu अपने न्यूनतम और लक्ष्य sdk संस्करणों के आधार पर।

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