谷歌眼镜语音菜单更新



在我的应用程序中,我使用onCreatePanelMenu来扩展语音识别的菜单。当我膨胀一个简单的菜单时,它工作得很好,但我想做的是根据用户在程序的哪个时刻膨胀一个不同的菜单

使用onCreateOptionsMenuinvalidateOptionsMenu()可以很好地用于手势菜单,而对于语音菜单则不一样。

我试图使代码工作是:

@Override
public boolean onCreatePanelMenu(int featureId, Menu menu) {                    // Voice creation menu...
    if (featureId == WindowUtils.FEATURE_VOICE_COMMANDS) {
        if(conStateMenu){
            getMenuInflater().inflate(R.menu.voice_aftcon_menu, menu);
        }else{
            getMenuInflater().inflate(R.menu.voice_befcon_menu, menu);
        }
        return true;
    }
    return super.onCreatePanelMenu(featureId, menu);                // Pass through to super to setup touch menu.
}

其中conStateMenu在执行过程中的某个不同点发生变化。同样,这适用于手势菜单,但不适用于无效菜单,有办法做到这一点吗(无效并加载新菜单)?

谢谢!

您要查找的方法是Window#invalidatePanelMenu(int):

getWindow().invalidatePanelMenu(WindowUtils.FEATURE_VOICE_COMMANDS);

这将告诉框架,此功能已失效,需要重新创建/准备。

最新更新