Подтвердить что ты не робот

Android Создание простого меню программно

Я пытаюсь создать простое меню с помощью одной кнопки, которая вызовет метод очистки массива. Я не хочу использовать xml, потому что мне нужна только одна кнопка.

Что-то вроде этого -

public boolean onCreateOptionsMenu(Menu menu) {
    button "Clear Array";
    onClick{// run method that wipes array};
    return true;
}

Спасибо

4b9b3361

Ответ 1

Используется метод A-C, но вы не должны вручную настраивать прослушиватели кликов. Особенно, когда у вас есть несколько пунктов меню.

Я предпочитаю этот способ:

private static final int MENU_ITEM_ITEM1 = 1;
...
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    menu.add(Menu.NONE, MENU_ITEM_ITEM1, Menu.NONE, "Item name");
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case MENU_ITEM_ITEM1:
        clearArray();
        return true;

    default:
        return false;
  }
}

Используя этот подход, вы избегаете создания ненужных объектов (слушателей), и я также считаю, что этот код легче читать и понимать.

Ответ 2

Что-то вроде этого может работать:

public boolean onCreateOptionsMenu(Menu menu) {
  MenuItem item = menu.add ("Clear Array");
  item.setOnMenuItemClickListener (new OnMenuItemClickListener(){
    @Override
    public boolean onMenuItemClick (MenuItem item){
      clearArray();
      return true;
    }
  });
  return true;
}

Menu дает удобный метод add(), который позволяет вам добавить MenuItem. Поэтому мы делаем это. Затем мы назначим OnMenuItemClickListener в MenuItem и переопределим его onMenuItemClick(), чтобы сделать то, что мы хотим.

Ответ 3

Программно, я смог создать простое меню, используя следующий код.

private final int MenuItem_EditId = 1, MenuItem_DeleteId = 0;

@Override
  public boolean onCreateOptionsMenu(Menu menu){

    MenuItem edit_item = menu.add(0, MenuItem_EditId, 0, R.string.edit);
    edit_item.setIcon(R.drawable.edit);
    edit_item.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM);

    MenuItem delete_item = menu.add(0, MenuItem_DeleteId, 1, R.string.edit);
    delete_item.setIcon(R.drawable.delete);
    delete_item.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM);

    return super.onCreateOptionsMenu(menu);
}