我制作了一个应用程序OB Nyt,它在 Froyo 及以下版本上运行良好 - 但在 ICS 及以上版本上,当我单击菜单按钮(更新链接、图像活动链接和搜索活动链接)时,什么也没有发生。当我单击 ICS 中的按钮时,手机上的按钮会亮起 - 但活动不会像在 Froyo 上那样打开。我对 ActionBarSherlock 的修改很少。我从 toast 消息中知道点击已在 ICS 中注册。但是活动没有开始。在 LogCat 我得到一个
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 中做出反应?我在我朋友的三星 Galaxy II 和 III 上用我自己的旧 HTC Desire 和 ICS 测试了 Jelly Bean,结果完全相同。
[编辑]:这使它工作:
if (item.getTitle()=="Save")
代替
if (item.toString()=="Save")
初学者的错误,我知道 ;-)