1
我得到了一個添加了值的子菜單,然後我想通過讀取包含當前視圖模式的currentViewMode變量來設置它們......下面的代碼必須檢查第一個,但它沒有。請指教。子菜單設置複選框
private enum ViewMode
{
NORMAL,
SATELLITE,
HYBRID
}
private ViewMode currentViewMode = ViewMode.NORMAL;
private final int SUB_MENU_GROUP = 1;
private final int SUB_MENU_ITEM_NORMAL = 1;
private final int SUB_MENU_ITEM_SATELLITE = 2;
private final int SUB_MENU_ITEM_HYBRID = 3;
public boolean onCreateOptionsMenu(Menu menu) {
SubMenu sub = menu.addSubMenu(0, 1, 0, R.string.menu_mapwindow_viewmode).setIcon(R.drawable.ic_menu_refresh);
sub.add(SUB_MENU_GROUP, SUB_MENU_ITEM_NORMAL, Menu.NONE, this.getString(R.string.mapwindow_viewmode_normal));
sub.add(SUB_MENU_GROUP, SUB_MENU_ITEM_SATELLITE, Menu.NONE, this.getString(R.string.mapwindow_viewmode_satellite));
sub.add(SUB_MENU_GROUP, SUB_MENU_ITEM_HYBRID, Menu.NONE, this.getString(R.string.mapwindow_viewmode_hybrid));
sub.setGroupCheckable(SUB_MENU_GROUP, true, true);
if (this.currentViewMode == ViewMode.NORMAL)
sub.findItem(SUB_MENU_ITEM_NORMAL).setChecked(true);
else if (this.currentViewMode == ViewMode.SATELLITE)
sub.findItem(SUB_MENU_ITEM_SATELLITE).setChecked(true);
else if (this.currentViewMode == ViewMode.HYBRID)
sub.findItem(SUB_MENU_ITEM_HYBRID).setChecked(true);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId())
{
case SUB_MENU_ITEM_NORMAL:
item.setChecked(!item.isChecked());
this.currentViewMode = ViewMode.NORMAL;
Log.i(this.getClass().getName(), "Normal");
break;
case SUB_MENU_ITEM_SATELLITE:
item.setChecked(!item.isChecked());
this.currentViewMode = ViewMode.SATELLITE;
Log.i(this.getClass().getName(), "Satellite");
break;
case SUB_MENU_ITEM_HYBRID:
item.setChecked(!item.isChecked());
this.currentViewMode = ViewMode.HYBRID;
Log.i(this.getClass().getName(), "Hybrid");
break;
default:
super.onOptionsItemSelected(item);
}
return true;
}
謝謝我發現我的onOptionsItemSelected火,怪異! – Lennie