【问题标题】:Menu not refreshing on some devices某些设备上的菜单不刷新
【发布时间】: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


    【解决方案1】:

    如果有人很有趣,我自己找到了解决方案。 我将所有代码从 setGlobalState 方法转移到 onCreateOptionsMenu,并删除了菜单项的类字段——它起作用了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-18
      • 1970-01-01
      • 2016-01-21
      • 1970-01-01
      • 1970-01-01
      • 2013-02-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多