我盯着我的眼睛发红了:
我使用ABS,一切都在Android 2.2下完美运行,但在ICS上item.getItemId()
总是返回0.因为item.toString()
返回不同的值。我觉得我应该能够解决这个问题,但我总是在信息页面上结束。
public boolean onCreateOptionsMenu(Menu menu) {
menu.add("Info")
.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
menu.add("Preferences")
.setIcon(R.drawable.ic_preferences)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(item.toString() == "Preferences"){
Intent intent = new Intent();
intent.setClass(this,Preferences.class);
startActivity(intent);
return true;
}
else {
Intent intent = new Intent();
intent.setClass(this,Info.class);
startActivity(intent);
return true;
}
}
我想我应该开启item.getItemId()
,但我无法弄清楚ActionBar Views的定义。有一段时间我对菜单文件夹下的文件actionbar.xml感到困惑,但收效甚微:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/preferences"
android:showAsAction="always"
android:icon="@drawable/ic_preferences"></item>
<item android:id="@+id/info"
android:showAsAction="always"></item>
</menu>
人们应该相信答案很简单。任何人都可以在SDK版本7到15之间的方法上给出正确的方向吗?
非常感谢任何帮助。
答案 0 :(得分:2)
试试这个:
private static final int MENU_INFO = 0;
private static final int MENU_SETTINGS = 1;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, MENU_INFO, 0, "Info")
.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
menu.add(0, MENU_SETTINGS, 0, "Preferences")
.setIcon(R.drawable.ic_preferences)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
return true;
}
/* Handles item selections */
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case MENU_INFO:
startActivity(new Intent(this, Info.class));
return true;
case MENU_SETTINGS:
startActivity(new Intent(this, Preferences.class));
return true;
}
return false;
}
诀窍确实是使用item.getItemId();
,因为你无法确定.toString()
上究竟返回了什么。通过在创建菜单选项时为每个菜单项指定静态int-reference,您可以知道在onOptionsItemSelected
- 方法中单击了哪一个。