web-dev-qa-db-ja.com

Androidプログラムで簡単なメニューを作成

配列をクリアするメソッドを呼び出す1つのボタンを持つシンプルなメニューを作成しようとしています。必要なのは1つのボタンだけなので、xmlを使用したくありません。

このようなもの -

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

ありがとうございました

42
Shmuel

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

このアプローチを使用することで、不必要なオブジェクト(リスナー)の作成を回避でき、このコードを読みやすく理解しやすくなります。

71
Paul

このような何かが動作する可能性があります:

_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を追加できます。だから私たちはそれを作ります。次に、 OnMenuItemClickListenerMenuItemに割り当て、その onMenuItemClick() をオーバーライドして、目的の処理を行います。 。

27
A--C

プログラムで、次のコードを使用して簡単なメニューを作成できました。

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);
}
16
Vikas

ここでは、クリックリスナーを使用してポップアップメニューを動的に実装しました。

    Dynamic_PopUpMenu.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            PopupMenu menu = new PopupMenu(DialogCheckBox.this, v);
            menu.getMenu().add("AGIL");  // menus items
            menu.getMenu().add("Dash");  // menus items
            menu.getMenu().add("AGILarasan");
            menu.getMenu().add("Arasan");
            menu.show();
        }
    });
1
Agilanbu