2013-08-09 10 views
7

मैं एक एंड्रॉइड एप्लिकेशन विकसित कर रहा हूं जो मानक एक्शनबार को नियोजित करता है।
एक निश्चित स्क्रीन पर मेरे पास एक फ़िल्टर आइकन है जो सशर्त रूप से आवश्यक है,
प्रदर्शित होने वाले डेटा की विशेषताओं के आधार पर, उदा। कुछ डेटा फ़िल्टर करने योग्य
अन्य नहीं हैं।
मुझे एक्शनबार पर कोई भी तरीका नहीं मिल रहा है जो प्रोग्रामेटिकल के लिए उम्मीदवारों को संभावित रूप से एक एक्शनबार एक्शन आइकन छुपाता है। मैं एक्शनबार एक्शन आइकन को कैसे सक्षम/अक्षम कर सकता हूं?
या
मैं एक्शनबार एक्शन आइकन को कैसे छुपा/खोल सकता हूं?
गतिशील रूप से सक्षम/अक्षम करें एंड्रॉइड एक्शनबार एक्शन आइकन

उत्तर

12

इस पर एक नज़र डालें, यह दिखाता है कि रनटाइम पर मेनू आइटम कैसे बदलें।

http://developer.android.com/guide/topics/ui/menus.html#ChangingTheMenu

आप उदाहरण के लिए) onCreateOpionsMenu अंदर अपनी गतिविधि के एक सदस्य चर (के रूप में मेनू को बचा सकता है और उसके बाद कुछ इस तरह करते हैं:

MenuItem item = mMenu.findItem(R.id.addAction); 
item.doSomething() 

जब आप बदलना चाहते हैं एक विशिष्ट मेनू आइटम पर कुछ।

+0

फिल, समय लेने के लिए धन्यवाद। वही चीज जो मुझे चाहिए था। शर्मिंदा महसूस करें मुझे यह खुद नहीं मिल सका :-) – Hector

2

जैसा कि मैं समझता हूं, आपको उस आइकन को हटाने की आवश्यकता है जो एक्शन बार शीर्ष बाईं ओर दिखाती है।

आप क्या कर सकते हैं कि कोड के इस सरल लाइन के साथ:

final ActionBar actionBar = getActionBar();  
actionBar.setDisplayShowTitleEnabled(false); 

और आप ऐप्लिकेशन का नाम कोशिश से छुटकारा पाने के लिए करना चाहते हैं:

actionBar.setDisplayShowHomeEnabled(false); 

आशा इस मदद करता है।

+0

ओपी –

0

आप भी इस कोशिश कर सकते हैं:

final ActionBar actionBar= getActionBar(); 
actionBar.hide(); 

यह आइकन और शीर्षक छुपा देगा।

import android.app.ActionBar; 

गुड लक

2

आप onPrepareOptionsMenu() विधि अधिभावी द्वारा यह कर सकते हैं:

अपने आयात मत भूलना। यहाँ एक छोटा सा उदाहरण

@Override 
public boolean onPrepareOptionsMenu(Menu menu) { 
    if (count < 1) 
     menu.getItem(4).setEnabled(false); //disable menuitem 5 
    if (!after) 
    menu.getItem(1).setVisible(false); // invisible menuitem 2 
    invalidateOptionsMenu(); 
    return true; 
} 

हालांकि, यह विधि केवल जब भी आप कार्रवाई पट्टी में मेनू बटन क्लिक करें कहा जाता है। यदि आपके पास एक्शन बार (मेनू बटन को छोड़कर) पर कोई आइकन है, तो उस पर क्लिक करने से OnPrepareOptionsMenu() विधि ट्रिगर नहीं होगी। इस विधि को मैन्युअल रूप से ट्रिगर करने के लिए आप अपने तरीकों से अवैधateOptionsMenu() का उपयोग कर सकते हैं। इस तरह

void yourMethod() { 
... 
invalidateOptionsMenu(); 
... 
} 
+0

का अनुरोध नहीं कर रहा था Fragment पर यह कैसे करें? ओपन्समेनू(); को अमान्य कैसे करें –

+1

getActivity()। UltateOptionsMenu() को काम करना चाहिए। –

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