【发布时间】:2014-11-16 02:32:00
【问题描述】:
我在某些设备上遇到了奇怪的菜单行为问题。 我所做的是根据应用程序状态显示/隐藏菜单项。 我正在使用 Actionbarsherlock。 我的代码是:
private MenuItem saveMI;
private MenuItem postMI;
private MenuItem editMI;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getSupportMenuInflater();
inflater.inflate(R.menu.menu_main, menu);
saveMI = menu.findItem(R.id.menu_save);
postMI = menu.findItem(R.id.menu_post);
editMI = menu.findItem(R.id.menu_edit);
if (app != null) {
app.setCurrentState();
}
return true;
}
void setGlobalState(State state, Object menuItem, String title) {
getSupportActionBar().setTitle(title);
boolean showSaveMenu = true;
boolean showPostMenu = true;
boolean showEditMenu = true;
switch (state) {
case EDITING:
showSaveMenu = false;
showPostMenu = true;
showEditMenu = false;
break;
case VIEWING:
showSaveMenu = false;
showPostMenu = true;
showEditMenu = true;
break;
case EDITING_NEEDTOSAVE:
showSaveMenu = true;
showPostMenu = true;
showEditMenu = false;
break;
case IMG_EDITING:
case POSTING:
case NOT_POST:
case NEW_POST:
case CHOOSING_ACCS:
showSaveMenu = false;
showPostMenu = false;
showEditMenu = false;
break;
}
if (saveMI != null) {
saveMI.setVisible(showSaveMenu);
}
if (postMI != null) {
postMI.setVisible(showPostMenu);
}
if (editMI != null) {
editMI.setVisible(showEditMenu);
}
invalidateOptionsMenu();
supportInvalidateOptionsMenu();
}
实际上,它在纯 Android 上运行良好。在大量设备上进行了测试。 但是有些设备假设忽略所有菜单更改,并且无论我设置什么状态,菜单项都保持不可见。 目前,我在两台设备上看到了这一点:华为 S7-701u 平板电脑和索尼 Xperia 手机。 恐怕,供应商用固件中的操作栏改变了一些东西...... 那么,您能帮我在所有设备上获得正常行为吗?
已编辑我提到,如果我在应用程序启动时不调用隐藏菜单项,它们会出现在操作栏中。但是我根本无法隐藏它们。因此,该设备上的操作栏似乎没有收到无效呼叫。 仍然卡住,需要帮助。
【问题讨论】:
标签: android actionbarsherlock menuitem