很长一段时间后,我回到android编程继续从我的newbee位置开始!
之前,这段代码在我的主要活动中对我有用:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.action_do_task) {
updateDisplay("Task done!");
}
return false;
}
现在我必须这样实现:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_do_task) {
doIt("done!");
}
//return false;
return super.onOptionsItemSelected(item);
}
如果我使用return false,程序会挂起,并且从错误消息中我无法弄明白为什么会这样。
然而在Android帮助中我将其视为默认值,super.onOptionsItemSelected(item);也会返回false,为什么会这样呢?如果我将代码返回false,程序崩溃的原因是什么?
有人可以帮忙理解这个吗?
答案 0 :(得分:1)
资源ID的类型很长。您应该将id变量声明为long类型。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
long id = item.getItemId();
if (id == R.id.action_do_task) {
doIt("done!");
}
return false;
//return super.onOptionsItemSelected(item);
}