Implementing an option menu in Android Studio

后端 未结 4 1670
名媛妹妹
名媛妹妹 2021-02-14 02:02

How do I implement an option menu in my android application? I tried code from Android Developer but I get errors. Such as these: Element menu must be declared.

相关标签:
4条回答
  • 2021-02-14 02:08

    You need to create a menu.xml in directory res->menu like menu

    <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>
    

    Then you need to create your menu from activity with below code

     @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);
    }
    
    0 讨论(0)
  • 2021-02-14 02:23

    In your java code, add this onCreateOptionsMenu to show optionMenu,

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

    Keep your under res\menu\option_menu folder,

    <?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>
    

    Now, if you want to set onOptionsItemSelected i.e onClick event for that ou can use,

    @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)
  • 2021-02-14 02:29

    You need to create a menu folder in the res directory and in the menu directory create file named my_menu.xml. In that file write these lines:

    <?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>
    

    Then in your Activity, do this:

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.my_menu, menu);
        return true;
    }
    
    0 讨论(0)
  • 2021-02-14 02:31

    You should use onCreateOptionsMenu (Menu menu)

    Initialize the contents of the Activity's standard options menu. You should place your menu items in to menu.

    This is only called once, the first time the options menu is displayed. To update the menu every time it is displayed, see onPrepareOptionsMenu(Menu).

    onCreateOptionsMenu(Menu menu) method which needs to override in Activity class. This creates menu and returns Boolean value. inflate inflates a menu hierarchy from XML resource.

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

    Your 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> 
    

    Please check demo Android Option Menu Example

    0 讨论(0)
提交回复
热议问题