配列をクリアするメソッドを呼び出す1つのボタンを持つシンプルなメニューを作成しようとしています。必要なのは1つのボタンだけなので、xmlを使用したくありません。
このようなもの -
public boolean onCreateOptionsMenu(Menu menu) {
button "Clear Array";
onClick{// run method that wipes array};
return true;
}
ありがとうございました
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;
}
}
このアプローチを使用することで、不必要なオブジェクト(リスナー)の作成を回避でき、このコードを読みやすく理解しやすくなります。
このような何かが動作する可能性があります:
_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()
をオーバーライドして、目的の処理を行います。 。
プログラムで、次のコードを使用して簡単なメニューを作成できました。
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);
}
ここでは、クリックリスナーを使用してポップアップメニューを動的に実装しました。
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();
}
});