我正在使用 Android ICS 4.0.3,我下载了 Ancal 项目并进行了研究。我在活动中添加了一些选项菜单,但它不能调用 opOptionsItemSelected 方法。这是我的代码:
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
String displayText = dateFormatFull.format(new Date());
switch(iCurrentAgendaViewType) {
case AgendaView.viewMode.DAY:
displayText = dateFormatFull.format(CurrentAgendaView.GetViewStartDate().getTime()).toString();
break;
case AgendaView.viewMode.WEEK:
displayText = dateFormatFull.format(CurrentAgendaView.GetViewStartDate().getTime()).toString();
break;
case AgendaView.viewMode.MONTH:
displayText = dateFormatMonth.format(CurrentAgendaView.GetCurrentSelectedMonthAsCalendar().getTime()).toString();
break;
}
if (iCurrentAgendaViewType == AgendaView.viewMode.TODAY) {
menu.add(Menu.NONE, android.R.id.button2, 1, displayText).setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
} else {
menu.add(Menu.NONE, R.drawable.ic_arrow_left, 0, "").setIcon(R.drawable.ic_arrow_left).setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
menu.add(Menu.NONE, android.R.id.button2, 1, displayText).setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
menu.add(Menu.NONE, R.drawable.ic_arrow_right, 2, "").setIcon(R.drawable.ic_arrow_right).setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
}
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
if (DEBUG) {
Log.d(TAG, "============ onOptionsItemSelected ===========");
}
switch (item.getItemId())
{
case R.drawable.ic_arrow_left:
CurrentAgendaView.SetPrevViewItem();
RefreshAgendaAfterViewItemChange();
return true;
case R.drawable.ic_arrow_right:
CurrentAgendaView.SetNextViewItem();
RefreshAgendaAfterViewItemChange();
return true;
case miNewAppt:
openActAppointment(-1, -1, -1);
return true;
case miNewTask:
openActTask(-1);
return true;
case miNewNote:
openActNote(-1);
return true;
case miShowAllTasks:
{
item.setChecked(!item.isChecked());
prefs.bShowAllTasks = item.isChecked();
prefs.Save();
refreshData();
menuItemUpdateIcons(item);
return true;
}
case miOptions:
openActOptions();
return true;
case mTimeZone:
showTimeZone();
return true;
case miAbout:
openActViewAbout();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
我像图像一样在运行时添加了操作栏菜单,但是当我调试上面的代码时,没有调用 onOptionsItemSelected 方法。
这有什么问题?提前致谢。