Android忽略switch语句(代码不可执行)

时间:2016-01-10 13:26:55

标签: android

我添加了一个工具栏并开始实现onOptionsItemSelected方法。但行动没有奏效。我调试了程序,发现忽略了switch语句。如果我将逻辑实现为if,它就可以工作。代码已编译,我可以看到更改,但Studio显示switch中的代码不可执行。我不知道为什么。

enter image description here

所要求的代码:

@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.
    Log.d(logTag, "onOptionsItemSelected()");
    if (item.getItemId() == R.id.action_level) {
        Toast.makeText(this, "If!", Toast.LENGTH_LONG).show();
//            return true;
    }
    int itemId = item.getItemId();
    switch (itemId) {
        case R.id.action_settings: {
            return true;
        }
        case R.id.action_level: {
            return true;
        }
        default: {
            Toast.makeText(this, "Default", Toast.LENGTH_LONG).show();
            return super.onOptionsItemSelected(item);
        }
    }
}

2 个答案:

答案 0 :(得分:1)

尝试以下选项:

  • 在switch语句中添加更多逻辑
  • 使用文件/无效缓存选项查看问题是否仍然存在
  • 再次清理并重建解决方案
  • 检查当前IDE版本的更新
  • 检查您当前使用的API级别版本的更新,并确保在当前的IDE中更新。

此外,如果开关语句的选项不超过3个,如果可能表现更好且更具可读性

答案 1 :(得分:1)

我更喜欢添加答案,首先ifswitch之间没有区别我可以考虑切换嵌套if .. else语句

如果您是(item.getItemId() == R.id.action_level),则拨打R.id.action_settings并拨打电话break;

提供您的菜单文件以确保包含两个ID

如果您在运行应用程序之前进行任何更改(推荐)

,则只需重新构建

为什么你在switch语句中返回true,你应该做<tr> <td class="tbHead">Document No.</td> <td class="tbContent"><p id="documentId">${approva.documentId}</p></td> <td class="tbHead" rowspan="2">Approval</td> <td class="tbContent"><p id="docApp0">${approva.docApp0}</p></td> <td class="tbContent"><p id="docApp1">${approva.docApp1}</p></td> <td class="tbContent"><p id="docApp2">${approva.docApp2}</p></td> <td class="tbContent"><p id="docApp3">${approva.docApp3}</p></td> <td class="tbContent"><p id="docApp4">${approva.docApp4}</p></td> </tr> <tr> <td class="tbHead">Department</td> <td class="tbContent"><p id="docDepartment">${approva.docDepartment}</p></td> <td class="tbContent"><p id="docApp0">${approva.docApp0}</p></td> <td class="tbContent"><p id="docApp1">${approva.docApp1}</p></td> <td class="tbContent"><p id="docApp2">${approva.docApp2}</p></td> <td class="tbContent"><p id="docApp3">${approva.docApp3}</p></td> <td class="tbContent"><p id="docApp4">${approva.docApp4}</p></td> </tr>