59

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

このようなもの -

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

ありがとうございました

4

6 に答える 6

85

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

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

于 2013-03-03T22:23:32.260 に答える
32

このようなものが機能する可能性があります:

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

Menuadd()MenuItemを追加できる便利なメソッドを提供します。だから私たちは1つを作ります。次に、にを割り当て、それをOnMenuItemClickListenerオーバーライドMenuItemonMenuItemClick()て、実行したいことを実行します。

于 2013-03-03T22:18:24.527 に答える