2012-11-28 23 views
9

क्या कोई प्रोग्राम विकल्प प्रोग्रामेटिक रूप से चुनने का कोई तरीका है? असल में, मैं एक विशिष्ट मेनू विकल्प दबाकर एक ही कार्रवाई करने के लिए एक बटन चाहता हूं। मैं ऑप्शन इटैम चयन (मेनू इटैम आइटम) पर कॉल करने की कोशिश करने के बारे में सोच रहा था, लेकिन मुझे नहीं पता कि मेनू आइटम के लिए क्या रखा जाए।एंड्रॉइड - प्रोग्रामेटिक रूप से मेनू विकल्प का चयन करें

उत्तर

13

आपके पास यूआई ईवेंट दोनों एक सामान्य विधि क्यों नहीं हैं?

+1

सरल जवाब अक्सर सबसे अच्छा कर रहे हैं;) +1 – Squonk

+0

मैं() onOptionsItemSelected में कुछ साझा कोड सभी मेनू आइटम कि मैं नहीं बल्कि अलग नहीं होगा के लिए है। और मैं बस उम्मीद कर रहा था कि मेनू विकल्प को कॉल करने का एक आसान तरीका था। – dt0

+0

@ dt0 हमेशा कोड को दोबारा करने और इसे DRY और सुंदर बनाने का एक तरीका है, खासकर यदि यह आपका स्वयं का कोड है। यदि साझा कोड रनटाइम चर का एक गुच्छा है, तो हो सकता है कि आप एक संरचना का उपयोग कर सकें जिसमें यह सब एक ही स्थान पर होगा। यदि यह कार्यात्मक सामान है, तो आप इसे उपयोगिता विधियों में कारक बना सकते हैं। हमेशा एक तरीका है, और मैं दृढ़ता से एक यूआई घटना को दूसरे से कॉल नहीं करने पर विचार करता हूं। यदि आप अपने कोड की अभिव्यक्ति के बारे में सोचते हैं, तो मेनू क्लिक नहीं किया गया था इसलिए मेनू क्लिक ईवेंट को कॉल करना थोड़ा अजीब है। – Rich

15

हाँ मेनू विकल्प चुनने का कोई तरीका है! और तुम onOptionsItemSelected (MenuItem आइटम) को कॉल करने के बारे में सही कर रहे हैं यहाँ जिस तरह से MenuItem प्राप्त करने के लिए है:

private Menu menu; 

@Override 
public boolean onCreateOptionsMenu(final Menu menu) { 
    this.menu = menu; 
    return super.onCreateOptionMenu(menu); 
} 
:

1) सबसे पहले आप क्या करने की जरूरत यहाँ अपनी गतिविधि के अंदर मेनू वर्ग के संदर्भ मिलता है

2) तो मूल रूप से, मेनू क्लास में आपके सभी मेनू आइटम होते हैं।

onOptionsItemSelected(menu.findItem(R.id.action_id)); 

... जहां action_id मेनू आइटम आप चयन करना चाहते का आईडी है: तो एक बार आप इस संदर्भ है, तो आप इस तरह मेनू क्लिक अनुकरण। आप इस आईडी को अपने मेनू एक्सएमएल में पा सकते हैं।

0

मैं यह भी ढूंढ रहा था। और जब कोई आइटम चेक किए जाने पर उपयोग की जाने वाली विधि को कॉल करने के लिए समझ में आता है, तो वह यूआई में चेक किए गए मेनू आइटम को सेट नहीं करेगा।

तो क्या मैं समाप्त हो गया कर रहा था:

NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
     navigationView.setNavigationItemSelectedListener(this); 

MenuItem menuItem = (MenuItem)navigationView.getMenu().findItem(R.id.nav_menu_item_1); 
     menuItem.setChecked(true); 
     onNavigationItemSelected(menuItem); 

के रूप में मेरे लिए वांछित निम्नलिखित काम नहीं किया:

onOptionsItemSelected (menu.findItem (R.id.action_id));

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