我做了一個應用程序OB Nyt,在Froyo和以下版本上運行良好 - 但是在ICS和上面,當我單擊菜單按鈕(更新鏈接,鏈接到圖像活動和鏈接到搜索活動)時,沒有任何反應。當我點擊ICS上的按鈕時,手機上的按鈕亮起 - 但這些活動並未像在Froyo上那樣開啓。我修改了ActionBarSherlock很少。我從吐司消息中知道點擊是在ICS中註冊的。但活動並未開始。在LogCat我得到一個Actionbarsherlock:菜單按鈕在Froyo中工作,但不是ICS?
window already focused ignoring focus gain of com.android.internal.view.iinputmethodclient
每次我點擊其中一個按鈕。我有一個猜測,也許是在這裏的問題可能是:
public boolean onCreateOptionsMenu(Menu menu) {
//Used to put dark icons on light action bar
boolean isLight = true;
menu.add("Save")
.setIcon(isLight ? R.drawable.ic_stilling1 : R.drawable.ic_stilling1)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
menu.add("Search")
.setIcon(isLight ? R.drawable.ic_search_inverse : R.drawable.ic_search)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
menu.add("Opdatér")
.setIcon(isLight ? R.drawable.ic_refresh_inverse : R.drawable.ic_refresh)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
return true;
}
public boolean onOptionsItemSelected(MenuItem item) {
//This uses the imported MenuItem from ActionBarSherlock
Toast.makeText(this, "Got click: " + item.toString(), Toast.LENGTH_SHORT).show();
if (item.toString()=="Save"){
startActivity (new Intent(getApplicationContext(), F3Activity.class));
return true;
}
if (item.toString()=="Search"){
startActivity (new Intent(getApplicationContext(), SearchActivity.class));
return true;
}
if (item.toString()=="Opdatér"){
startActivity (new Intent(getApplicationContext(), ABSTabsViewPagerActivity.class));
return true;
}
return true;
}
正如你可以看到我在編程菜鳥:-)有沒有人對我怎麼能得到的按鈕反應的線索在ICS中?我已經在我自己的舊HTC Desire和ICS上對我的朋友們的三星Galaxy II和III進行了果凍豆測試,測試結果完全相同。
[編輯]:這使得它的工作:
if (item.getTitle()=="Save")
,而不是
if (item.toString()=="Save")
初學者的錯誤,我知道這;-)
ActionBarSherlock中99.9%的事物在2.x以上的每個平臺上工作。菜單不在.1% – hwrdprkns
如果我想確保它們在ICS/ABS中打開,我可以用其他方式啓動這些活動嗎? – bengaard
我還會返回super.onXYZ,而不是同時使用這兩種方法 - 具體而言,如果您的某個條件在第二種方法中未得到滿足。 – hwrdprkns