在我的应用中,我正在使用onCreatePanelMenu
为语音识别充气菜单。当我给一个简单的菜单充气时,它工作正常,但我想要做的是根据用户的程序时刻给不同的菜单充气。
使用onCreateOptionsMenu
和invalidateOptionsMenu()
可以正常使用手势菜单,对语音菜单使用不一样。
我正在尝试的代码是:
@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
在执行期间的某个不同点发生变化。同样,这可以在手势菜单中正常工作,但是对于无效的菜单,有没有办法(无效并加载新菜单)?
谢谢!
答案 0 :(得分:0)
您正在寻找的方法是Window#invalidatePanelMenu(int)
:
getWindow().invalidatePanelMenu(WindowUtils.FEATURE_VOICE_COMMANDS);
这将告诉框架该功能已失效,需要重新创建/准备。