我試圖用一個按鈕來創建一個簡單的菜單,該按鈕將調用清除該數組的方法。我不想使用xml,因爲我需要的只是一個按鈕。Android以編程方式創建一個簡單的菜單
事情是這樣的 -
public boolean onCreateOptionsMenu(Menu menu) {
button "Clear Array";
onClick{// run method that wipes array};
return true;
}
謝謝
我試圖用一個按鈕來創建一個簡單的菜單,該按鈕將調用清除該數組的方法。我不想使用xml,因爲我需要的只是一個按鈕。Android以編程方式創建一個簡單的菜單
事情是這樣的 -
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
並覆蓋它的onMenuItemClick()
以完成我們想要的操作。
很好用;)謝謝 – Shmuel 2013-03-03 22:24:35
@大衛沒問題。既然你只需要一個按鈕(就像你在你的問題中指定的那樣),這很好,並且佔用較少的代碼。但正如保羅所說,如果你有多個按鈕,建議你遵循這種方法。 – 2013-03-03 22:26:24
以編程方式,我能夠使用下面的代碼創建一個簡單的菜單。
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);
}
我也喜歡這個。絕對要在將來使用 – Shmuel 2013-03-03 22:26:52
+1,但是:在Android 4上?編譯器錯誤,因爲break語句後返回。我會盡力編輯它,完成 – 2013-04-09 08:03:30
謝謝,錯過了。 – Paul 2013-04-09 20:30:20