2014-10-13 2 views
0

내 앱에서 onCreatePanelMenu을 사용하여 음성 인식 메뉴를 부 풀립니다. 내가 간단한 메뉴를 부 풀릴 때 잘 동작하지만, 내가하고 싶은 것은 프로그램의 순간에 따라 다른 메뉴를 부 풀리는 것이다.Google Glass 음성 메뉴 업데이트

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 변경됩니다. 다시 말하지만, 제스처 메뉴를 사용하면 문제가 없지만, voide 메뉴를 사용하면 효과가 있습니다 (무효화 및 새 메뉴로드).

감사합니다.

+0

'invalidateOptionsMenu'는'onCreateOptionsMenu'가 아니라'onPrepareOptionsMenu'를 호출합니다. –

+0

그래, 나도 봤어.하지만 안드로이드 [api] (http://developer.android.com/reference/android/app/Activity.html)에 가면 "onCreateOptionsMenu (Menu) 메서드는 다음에 표시해야 할 때 호출해야합니다. " 'invalidateOptionsMenu()'라는 데스 니스에서, 실제로 잘 작동하고 있습니다. – gkapellmann

+0

그리고이 함수에 같은 로그인을'onPrepareOptionsMenu'에 추가하려고 했습니까? –

답변

0

당신이 찾고있는 방법은 Window#invalidatePanelMenu(int)입니다 :

getWindow().invalidatePanelMenu(WindowUtils.FEATURE_VOICE_COMMANDS); 

이이 기능을 무효로하고 준비/다시 만들어야 된 프레임 워크를 말할 것이다.

+0

완벽 해, 정말 고마워. 고마워! – gkapellmann