Android:无法解析符号“id”

时间:2015-08-05 18:51:46

标签: java android

我目前正在关注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无法解析。什么可能导致这一点,因为它对我来说都很好。

2 个答案:

答案 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