在一個android建立菜單menu時,需要重寫activity的oncreateoptionsmenu(menu menu)方法,這個方法隻在第一次建立的時候調用一次,是以如果之後想對menu進行動态的修改,那麼就不要再對oncreateoptionsmenu做什麼手腳了。
于是就要用到onprepareoptionsmenu(menu menu)方法了。onprepareoptionsmenu與oncreateoptionsmenu不同的是,他在每次按下menu硬鍵之前會被調用,是以可以在這裡動态的改變menu。如果需要建立一個全新的菜單,那麼可以在
public boolean onprepareoptionsmenu(menu menu) {
super.onprepareoptionsmenu(menu);
menu.clear();
cb=(checkbox)findviewbyid(r.id.my_mms_item_checkbox);
menu.add(0, menu_01, 0, "建立短信").seticon(r.drawable.menu_new_mms);
log.d(tag,"cb.getvisibility():"+cb.getvisibility());
if(cb.getvisibility()==view.gone)
menu.add(0, menu_02, 0, "多選").seticon(r.drawable.mms_multiple);
else
{
menu.add(0, menu_03, 0, "取消多選").seticon(r.drawable.mms_multiple);
menu.add(0, menu_04, 0, "選擇全部").seticon(r.drawable.mms_multiple);
}
return true;
}
如果沒有clear而直接add的話,那麼菜單中菜單項是會“追加”的,這樣,随着你不停的點menu鍵,菜單項就不停的增加。
另外,android系統預設的菜單樣式是支援最多3個一行,如果有4項就每行2個有2行...如果想自定義樣式,可以使用xml檔案定義樣式。