我遇到了公共布尔值onOptionsItemSelected(MenuItem项)的问题。
我的代码:
public boolean onOptionsItemSelected(MenuItem item)
{
switch(item.getItemId())
{
case R.id.action_timetable:
{
wbViewTimetable.setInitialScale(200);
loadTimetable();
break;
}
case R.id.action_map_eg:
{
wbViewTimetable.setInitialScale(100);
wbViewTimetable.loadUrl("file:///android_asset/floor_plan_eg.png");
break;
}
case R.id.action_map_og:
{
wbViewTimetable.setInitialScale(100);
wbViewTimetable.loadUrl("file:///android_asset/floor_plan_og.png");
break;
}
}
return true;
}
我的main.xml:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" >
<item android:id="@+id/action_timetable"
android:title="Timetable"/>
<item android:id="@+id/action_map_eg"
android:title="Map 2" />
<item android:id="@+id/action_map_og"
android:title="Map 1"/>
<item android:id="@+id/action_settings"
android:title="Settings"
android:orderInCategory="100"/>
所以我的问题是,如果我选择菜单条目,每次选择并打开另一个菜单条目时,f.e。如果我选择第一个,第二个将被选中,第二个将被选中,依此类推。
真正唯一有效的是最后一个(action_settings)。
答案 0 :(得分:1)
我看不出任何明显的原因,为什么会从您提供的代码中发生这种情况,但是您的开关/案例语法不同。
你写得像这样:
switch(item.getItemId()) {
case R.id.action_timetable:
{
// ...
break;
}
case R.id.action_map_eg:
{
// ...
break;
}
}
return true;
我是这样写的:
switch(item.getItemId()) {
case R.id.action_timetable:
// ...
return true;
case R.id.action_map_eg:
// ...
return true;
}
似乎不太可能,但这可能是问题的根源。希望这会有所帮助。