我目前正在关注Android编程的Google文档。当我在操作栏上按下按钮时,我处于执行任务所需的位置。这是我的代码:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
switch (item.getItemId()){
case R.id.action_search:
openSearch();
return true;
case R.id.action_settings:
openSettings();
return true;
default:
return super.onOptionsItemSelected(item);
}
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
但是在if(id == R.id.action_settings)上,我收到一条错误,指出符号r无法解析。什么可能导致这一点,因为它对我来说都很好。
答案 0 :(得分:2)
除了丢失导致OP损坏的id
之外,switch()
以下的任何内容都只是dead code并且可以安全删除(我敢打赌你的IDE已经标记了你这个):
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
switch (item.getItemId()){
case R.id.action_search:
openSearch();
return true;
case R.id.action_settings:
openSettings();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
修改强>
我收到一条错误消息,指出符号r无法解析。
没有看到真正的错误消息,我认为此处的投诉归因于id
,但如果真的是R
,那么请检查import
部分,看看你是否有import android.R
。如果是这样,请将其删除并重试。
答案 1 :(得分:-1)
if (id == R.id.action_settings) {
return true;
}
不会编译,因为你没有声明id
之前的任何地方。
您是否意外删除了int id = item.getItemId();
?
编辑:整个if条件是多余的,你之前在代码中处理action_settings
。