7

में परिभाषित सरल होना चाहिए लेकिन शायद नहीं होना चाहिए।एक्सप्लोर एक्शनबारशेलॉक मेनू एक्सएमएल

एंड्रॉइड 3.0+ में एक्शन बार का उपयोग करते समय आपके पास एक्सएमएल या कोड में अपने मेनू आइटम को परिभाषित करने का विकल्प होता है। मैं उन्हें एक्सएमएल में कोड करना पसंद करता हूं क्योंकि एक्शन बार कार्यात्मक से अधिक यूआई महसूस करते हैं।

औसत दिन पर, आप अभी इस का प्रयोग करेंगे एक मेनू

@Override 
public boolean onCreateOptionsMenu(Menu menu) 
{ 
    // Menu is defined inside 'res/menu/...xml 
    getMenuInflater().inflate(R.menu.activity_home, menu); 
    return true; 
} 

और अपने एक्सएमएल फ़ाइल में एक्सएमएल को बढ़ाने के लिए इस

<menu xmlns:android="http://schemas.android.com/apk/res/android" > 

    <item 
     android:id="@+id/menu_settings" 
     android:orderInCategory="100" 
     android:showAsAction="never" 
     android:title="@string/menu_settings"/> 
    <item 
     android:id="@+id/menu_item_menu" 
     android:icon="@drawable/menu_off_128" 
     android:showAsAction="ifRoom|withText" 
     android:title="@string/inbox_string"/> 
    <item 
     android:id="@+id/menu_item_gallery" 
     android:icon="@drawable/gallery_off_128" 
     android:showAsAction="ifRoom|withText" 
     android:title="@string/gallery_string"/> 
    <item 
     android:id="@+id/menu_item_inbox" 
     android:icon="@drawable/inbox_off_128" 
     android:showAsAction="ifRoom|withText" 
     android:title="@string/inbox_string"/> 
    <item 
     android:id="@+id/menu_item_contact" 
     android:icon="@drawable/phone_off_128" 
     android:showAsAction="ifRoom|withText" 
     android:title="@string/contact_string"/> 

</menu> 

कैसा लगेगा, मैं के साथ सामना कर रहा हूँ एक एक्शनबार को पीछे की ओर संगत बनाने की समस्या संगत और एक्शनबार्सहेलॉक का उपयोग करने और लोकप्रिय होने के लिए सबसे सुखद लगता है। इसलिए मैंने ऊपर की कोशिश की कार्रवाई के साथ कार्रवाई की और दुख की बात है कि संकलन समय के मुद्दे हैं।

अर्थात् inflater द्वारा लौटाई गई मेनू क्लास 'Android.view.menu' से है और 'com.actionbarsherlock.menu' नहीं है। मैं जिथूब पर नमूने के माध्यम से खुदाई कर रहा था, लेकिन उनमें से सभी को कोड में परिभाषित मेनू है।

तो क्या किसी ने किसी XML फ़ाइल आधारित लेआउट के साथ काम कर रहे एक्शनबर्शरलॉक मेनू प्राप्त करने के लिए उलझा हुआ है?

उत्तर

23

कोशिश इस

@Override 
    public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) { 
     getSupportMenuInflater().inflate(R.menu.your_menu, menu); 
     return true; 
} 
+0

com.actionbarsherlock.view.Menu जहां मैं इस वर्ग मिल जाएगा .. यहाँ है:

आपको बस इतना करना चाहता हूँ क्या कॉल getSupportMenuInflater() बजाय getMenuInflater() इसलिए की तरह है मेरा लिंक http://stackoverflow.com/questions/12779308/how-to-use-menu-in- प्रश्न के बाहर। क्या मैं इस परियोजना का उपयोग अपने प्रोजेक्ट में कर सकता हूं। –

+0

क्या आप लोग किसी भी मौके से Robolectric के साथ इसका परीक्षण करने में सक्षम हैं? ऐसा लगता है कि यह संसाधन से अपने मेनू को फुला नहीं सकता है, संसाधन $ NotFoundException दे रहा है। –

5

बस इस समस्या अपने आप को किया था।

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getSupportMenuInflater().inflate(R.menu.activity_main, menu); 
    return true; 
}