#坑爹的Android menu出不来#
@Override
case ITEM3:
break;
}
}
貌似之前也遇到过这种类似的问题,网上各种所谓的解决方案也都试过,都无疾而终~当时也不知怎么解决的。
直到最近,做的一个东东被bossZhang训斥操作太麻烦时(果断吃力不讨好啊,苦逼programmer),才发现忘了加menu了。于是在原页面下加了menu菜单。代码如下:
//实现menu菜单 关于
private static final int ITEM1 = Menu.FIRST;
private static final int ITEM2 = Menu.FIRST+1;
private static final int ITEM3 = Menu.FIRST+2;
private static final int ITEM4 = Menu.FIRST+3;
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
menu.add(0, ITEM1, 0, "常规");
menu.add(0, ITEM2, 0, "重复");
menu.add(0, ITEM3, 0, "返回");
menu.add(0, ITEM4, 0, "设置");
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case ITEM1:
update(false);
break;
case ITEM2:
update(true);
break;
this.finish();
case ITEM4:
showSettingDialog();
break;
}
returnsuper.onOptionsItemSelected(item);
// return true;
可TMD死活就是可是死活就是不出来!!网上有说改这改那儿的,结果还是不行。
没办法,推测1,跟布局有关?
新建一个prj,onCreat()里面就只显示这个页面的东东,然后再加上以上生成menu的代码,结果,按menu键后,菜单出来了。可见以上代码完全没有问题!那是哪里出了毛病呢?
为何,菜单的创建事件被屏蔽了?
推测2:menu也是按键触发的,可能跟其他按键如back键事件触发冲突了。
查程序,果然,里头写了个onKeyDown的函数,哎,而且悲催地返回值为true(表示已处理完,那自然不会再响应menu键咯)
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
Intent intent = new Intent();
intent.setClass(this, TestMain.class);
startActivity(intent);
finish();
}
return true;
解决:注释掉onKeyDown函数,运行,menu菜单出现!
或者,将return true改为return false
╮(╯▽╰)╭...坑爹的menu键终于重现了..特此为记!!
明早继续改交互!