6

में एक विकल्प मेनू को कार्यान्वित करना मैं अपने एंड्रॉइड एप्लिकेशन में एक विकल्प मेनू कैसे कार्यान्वित करूं? मैंने Android Developer से कोड की कोशिश की लेकिन मुझे त्रुटियां मिल गईं। जैसे: एलिमेंट मेनू घोषित किया जाना चाहिए। यहाँ मेरी कोडएंड्रॉइड स्टूडियो

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:id="@+id/new_game" 
    android:icon="@drawable/ic_new_game" 
    android:title="@string/new_game" 
    android:showAsAction="ifRoom"/> 
<item android:id="@+id/help" 
    android:icon="@drawable/ic_help" 
    android:title="@string/help" /> 
</menu> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.lucavanraalte.test" > 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme" > 

    <activity android:name=".MainActivity" android:screenOrientation="portrait"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 

    </activity> 
</application> 

</manifest> 

enter image description here

+0

तुम गलत स्थान पर रखें जाँच, अपने Manifest.xml में रख नहीं है, लेकिन यह जगह आपकी (आपकी सक्रियता) में।xml जहां आप अपनी गतिविधियां लेआउट बनाते हैं – Strider

+0

मैं यह नहीं बता सकता कि यह आपके प्रश्न में कोड को स्वरूपित करने का तरीका है, लेकिन किसी भी मेनू फ़ाइलों को 'मेनू' उप-निर्देशिका में 'xml' फ़ाइल' res' फ़ोल्डर - यह मैनिफेस्ट का हिस्सा नहीं होना चाहिए। – PPartisan

+0

मुझे इसे कहां रखने की ज़रूरत है, और क्या रखा? क्या मुझे एक नया फ़ोल्डर बनाने की ज़रूरत है? – Lucafraser

उत्तर

15

, इस onCreateOptionsMenu जोड़ने optionMenu दिखाने के लिए,

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.option_menu, menu); //your file name 
     return super.onCreateOptionsMenu(menu); 
    } 

रखें अपने res \ menu \ option_menu फ़ोल्डर के तहत,

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:id="@+id/new_game" 
    android:icon="@drawable/ic_new_game" 
    android:title="@string/new_game" 
    android:showAsAction="ifRoom"/> 
<item android:id="@+id/help" 
    android:icon="@drawable/ic_help" 
    android:title="@string/help" /> 
</menu> 

अब, आप देखेंगे कि कहां उपयोग कर सकते हैं के लिए onOptionsItemSelected यानी onClick ईवेंट,

@Override 
    public boolean onOptionsItemSelected(final MenuItem item) { 

     switch (item.getItemId()) { 
      case android.R.id.new_game: 
       //your code 
       // EX : call intent if you want to swich to other activity 
       return true; 
      case R.id.help: 
       //your code 
       return true; 
      default: 
       return super.onOptionsItemSelected(item); 
     } 
    } 
+0

क्या आपकी समस्या हल हो गई है? @ लुकाफ्रासर –

+0

वैसे समस्या हल हो गई है लेकिन मैं विकल्प कैसे जोड़ूं? और मुझे अपने आवेदन में मेनू लोगो नहीं दिखाना चाहिए? – Lucafraser

+0

यदि आप इस कोड का पालन करते हैं तो अब आपके विकल्प जोड़े गए हैं। कोड चलाने का प्रयास करें और फिर से सूचित करें। –

1

आप res निर्देशिका में menu फ़ोल्डर बनाने के लिए की जरूरत है और मेनू निर्देशिका में फ़ाइल my_menu.xml नामित पैदा करते हैं। उस फ़ाइल में इन पंक्तियों के बारे में:

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:id="@+id/new_game" 
    android:icon="@drawable/ic_new_game" 
    android:title="@string/new_game" 
    android:showAsAction="ifRoom"/> 
<item android:id="@+id/help" 
    android:icon="@drawable/ic_help" 
    android:title="@string/help" /> 
</menu> 
फिर अपने गतिविधि में

, ऐसा करते हैं: अपने जावा कोड में

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

उस दूसरे भाग को मेरे MainActivity.java में जोड़ते समय मुझे "इन्फ्लैटर जैसे प्रतीक को हल नहीं किया जा सकता" जैसे त्रुटियां मिलती हैं – Lucafraser

1

सेट करना चाहते हैं, तो आपको निर्देशिका res- में एक menu.xml बनाने की जरूरत> मेनू की तरह मेनू

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:id="@+id/new_game" 
android:icon="@drawable/ic_new_game" 
android:title="@string/new_game" 
android:showAsAction="ifRoom"/> 
<item android:id="@+id/help" 
android:icon="@drawable/ic_help" 
android:title="@string/help" /> 
</menu> 

फिर आप की जरूरत नीचे दिए गए कोड

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

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 

    int id = item.getItemId(); 
    if (id == R.id.help) { 

     //do something 
     return true; 
    } 
    if (id == R.id.new_game) { 

     //do something 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 
3

साथ गतिविधि से अपने मेनू बनाने के लिए आप का उपयोग करना चाहिए

गतिविधि के मानक विकल्प मेनू की सामग्री आरंभ करें। आप को अपने मेनू आइटम को मेनू में रखना चाहिए।

इसे केवल एक बार बुलाया जाता है, पहली बार विकल्प मेनू प्रदर्शित होता है। प्रत्येक बार प्रदर्शित होने पर मेनू को अपडेट करने के लिए, ऑनप्रेयरऑप्शनमेनू (मेनू) देखें।

onCreateOptionsMenu (मेनू मेनू) विधि है जो गतिविधि वर्ग में ओवरराइड करने के लिए की जरूरत है। यह मेनू बनाता है और बूलियन मान देता है। बढ़ाना एक्सएमएल संसाधन से मेनू पदानुक्रम को फुलाता है।

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.option_menu, menu); // set your file name 
     return super.onCreateOptionsMenu(menu); 
    } 

आपका option_menu.xml

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/item_First" 
      android:title="@string/item_First" 
      android:showAsAction="ifRoom"/> 
    <item android:id="@+id/save_menu" 
      android:title="@string/save" 
      android:showAsAction="ifRoom"/> 
    <item android:id="@+id/item_Second" 
      android:title="@string/item_First" 
      android:showAsAction="ifRoom"/> 

</menu> 

कृपया डेमो Android Option Menu Example

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