7

से बढ़कर मुझे एंड्रॉइड पर विकल्प मेनू (मेनू बटन दबाकर दिखाया गया एक) बदलने में सक्षम होना चाहिए, ताकि एक मामले पर (उदाहरण के लिए बटन दबाया जा रहा है), यह मेनू के लिए एक विशिष्ट मेनू संसाधन (एक्सएमएल फ़ाइल में/res/menu/... के रूप में) का उपयोग करेगा, और किसी अन्य मामले पर, एक अलग एक्सएमएल फ़ाइल का उपयोग करें।एंड्रॉइड - परिवर्तन विकल्प मेनू गतिशील रूप से, लेकिन एक्सएमएल

अब तक मैंने इसे xml (उदाहरण here और here) के बिना करने के केवल उदाहरण देखे हैं, और उन्होंने ठीक काम किया है, लेकिन मैं कुछ मामलों पर पूरे मेनू को बदलने में सक्षम होना चाहता हूं। मैंने पाया समाधानों को संशोधित करने का प्रयास किया है, लेकिन मेरे परीक्षणों में से कोई भी काम नहीं करता है।

यदि संभव हो, तो मैं केवल मेनू को फिर से बनाना पसंद करूंगा यदि इसे मेनू संसाधन के साथ अपडेट किया जाना चाहिए जो वर्तमान से अलग है।

कृपया मेरी मदद करें।

उत्तर

16

यदि आप पहली बार बनाए गए विकल्पों के बाद विकल्प मेनू को बदलना चाहते हैं, तो आपको onPrepareOptionsMenu() विधि को ओवरराइड करना होगा।

public boolean onPrepareOptionsMenu (Menu menu) {  
    menu.clear();  
    if (CASE_1 == 0) { 
     CASE_1 = 1; 
     getMenuInflater().inflate(R.menu.secondmenu, menu); 
    } 
    else { 
     CASE_1 = 0; 
     getMenuInflater().inflate(R.menu.firstmenu, menu); 
    }  
    return super.onPrepareOptionsMenu(menu); 
} 

जहां CASE_1 उस मेनू का संदर्भ देता है जिसे आप अपनी आवश्यकता के आधार पर प्रदर्शित करना चाहते हैं।

+0

इसका मतलब यह नहीं होगा कि जब भी आप मेन्यू दिखाते हैं, तो इसे फिर से बनाया जाएगा, जैसा कि क्रिएटऑप्शनमेनू के विपरीत है? –

+0

हाँ इसे फिर से बनाया जाएगा और आपने यह कहा है (मैं मेनू को फिर से बनाना पसंद करूंगा) –

+2

या आपके पास प्रत्येक xml के एकल xml और setVisiblity को सही या गलत के रूप में सेट किया जा सकता है। यह http://stackoverflow.com/questions/9030268/set-visibility-in-menu-programatically-android –

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