Android: onCreateOptionsMenu() item action

后端 未结 4 2135
南旧
南旧 2021-02-06 23:49

I have a menu created through:

  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
    menu.add(\"Email\");

    return super.onCreateOptionsMenu(menu)         


        
4条回答
  •  面向向阳花
    2021-02-07 00:46

    Override onOptionsItemSelected(MenuItem item). So it would be like

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case 0:
                // do whatever
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }
    

    EDIT:

    Since this has gotten so many points, I should note that it is very good to add ID's to the menu options. A good way to ensure they are always unique is to define them in an ids.xml resource that is put in the res/values folder.

    ids.xml

    
        
        
        
    
    

    Then when you override the onCreateOptionsMenu(Menu menu) method, you can use the IDs like so:

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
      super.onCreateOptionsMenu(menu);
    
      menu.add(Menu.NONE, R.id.menu_action1, Menu.NONE, R.string.menu_action1);
      menu.add(Menu.NONE, R.id.menu_action2, Menu.NONE, R.string.menu_action1);
    
      return true;
    }
    

    Override onOptionsItemSelected(MenuItem item).

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.menu_action1:
                // do whatever
                return true;
            case R.id.menu_action2:
                // do whatever
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }
    

    The reason you do this is the Activity would override this with menu options, but Fragments can also add their own menu items. Using the ids.xml ensures the IDs are unique no matter which order they are placed.

提交回复
热议问题