2012-04-24 13 views
34

कॉलिंग मैं विकल्पमेनू के साथ एप्लिकेशन बना रहा हूं। मुझे इसके साथ कुछ उदाहरण मिले, लेकिन हर कोई विधि में super.onCreateOptionMenu() पर कॉल करने के लिए अलग-अलग जगह का उपयोग कर रहा है।ऑनक्रेटऑप्शनमेनू() सुपर

अलग अलग तरीकों की सूची:

@Override // without super 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.mymenu, menu); 
    return true; 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    super.onCreateOptionsMenu(menu); 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.mymenu, menu); 
    return true; 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.mymenu, menu); 
    return super.onCreateOptionsMenu(menu); 
} 

मैं क्या इस्तेमाल करना चाहिए?

उत्तर

29

यह इस बात पर निर्भर करता है कि आप क्या करना चाहते हैं। पहला उदाहरण आपके मेनू और केवल आपका मेनू रखेगा। दूसरा, पहला सुपर क्लास मेनू जोड़ देगा। अंतिम बार आपके मेनू को पहले जोड़ देगा। लेकिन, ध्यान रखें कि मेनू में ऑर्डर फ़ील्ड भी है, जिसे समय देने पर ध्यान में रखा जाएगा।

मान लें कि आप एक ऐसी गतिविधि को विस्तारित कर रहे हैं जिसमें पहले से मेनू है, लेकिन आप नहीं चाहते कि वह मेनू दिखाई दे, लेकिन दूसरा। उस स्थिति में आप पहले दृष्टिकोण का उपयोग करेंगे।

एक और उदाहरण: आप एक गतिविधि को विस्तारित कर रहे हैं जिसमें मेनू है, और आप एक और मेनू जोड़ना चाहते हैं। उस स्थिति में आप या तो दूसरे या अंतिम दृष्टिकोण का उपयोग कर सकते हैं।

3
onCreateOptionsMenu() के लिए

स्रोत इस प्रकार है:

public boolean onCreateOptionsMenu(Menu menu) { 
    if (mParent != null) { 
     return mParent.onCreateOptionsMenu(menu); 
    } 
    return true; 
} 

कहाँ mParent वर्तमान गतिविधि की मूल गतिविधि है। यदि आपकी गतिविधि android.app.Activity तक फैली हुई है तो अंत में true वापस कर सकते हैं और super पर कॉल करने के बारे में चिंता न करें, क्योंकि डिफ़ॉल्ट कार्यान्वयन मूल गतिविधि के आधार पर मेनू दिखाने का प्रयास करेगा, जिसे आप शायद नहीं चाहते हैं।

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