我添加了一个工具栏并开始实现onOptionsItemSelected
方法。但行动没有奏效。我调试了程序,发现忽略了switch
语句。如果我将逻辑实现为if
,它就可以工作。代码已编译,我可以看到更改,但Studio显示switch
中的代码不可执行。我不知道为什么。
所要求的代码:
@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);
}
}
}
答案 0 :(得分:1)
尝试以下选项:
此外,如果开关语句的选项不超过3个,如果可能表现更好且更具可读性
答案 1 :(得分:1)
我更喜欢添加答案,首先if
和switch
之间没有区别我可以考虑切换嵌套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>