我都盯着我的眼睛紅了這個:ActionBarSherlock和ICS
我使用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.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的方法相同的方法嗎?
任何幫助,非常感謝。
請按照尼克的答案。請注意,要比較字符串,您必須使用.equals()而不是==。所以,item.toString()==「首選項」應該是item.toString()。equals(「首選項」)。 – YuviDroid 2012-07-07 15:58:40
謝謝。我會牢記這一點。 – rudder 2012-07-07 16:12:53