2012-06-14 3 views
0

사용자가 메뉴 버튼을 누르면 컨텍스트 메뉴를 표시하려고합니다. 나는 발견하고 다음 코드 사용명시 적 컨텍스트 메뉴 호출은 Android에서 때때로 작동합니다.

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) 
{ 
    if((keyCode == KeyEvent.KEYCODE_MENU) && event.getRepeatCount() == 0) 
    { 
    ImageView v = (ImageView)findViewById(IMAGE_ID); 
    Log.v("me", "menu " + v.toString()); 
    openContextMenu(v); 
    } 
    return true; // return false; doesn't work either 
} 

뷰는 물론, 상황에 맞는 메뉴에 등록을하고, 오래 접촉에 의해 확인 작동합니다. 문제는 위에서 언급 한 코드가 수시로 작동한다는 것입니다. 그것은 로그 버튼을 누를 때 항상 로그 메시지가 표시되지만 매우 드물게 상황에 맞는 메뉴가 표시됩니다. 애플리케이션이 시작된 직후에 ok로 표시되는 유일한 경우입니다. 다른 말로하면, 첫 번째 시도 만 성공하고 다른 모든 시도는 가끔씩 작동하지만 대부분 시도하지 않습니다. 뷰는 변경되지 않고 항상 발견되며 그렇지 않으면 로깅 행에 이러한 문제와 예외가 발생할 수 있습니다.

+0

"사용자가 메뉴 버튼을 누르면 상황에 맞는 메뉴를 표시하고 싶습니다."- 그러지 마십시오. 처음에는 메뉴 버튼이없는 수백만 개의 장치가 있습니다. 메뉴 버튼이있는 곳에서 정상 동작 표시 줄이나 옵션 메뉴를 작동하도록하십시오. – CommonsWare

+0

@ CommonSWare. 누군가가 내가 문제를 해결하도록 도울 수 있다면 나는 그것을 할 것이다 ;-). 일부 메뉴에서는 메뉴 버튼이없는 것을 알지만,있는 경우 사용자는 일반적으로 버튼을 누르고 피드백을 얻는 데 익숙합니다. 액션 바 및 옵션 메뉴에 관해서는, 우리는이 디자인 질문을 다른 곳에서하지 않을 수있는 적절한 장소에서 토론 할 수 있습니다. 바로 알려주세요. – Stan

+0

"하지만 현재 존재하는 경우 사용자는 일반적으로이 버튼을 누르고 피드백을 얻는 데 익숙합니다."아니요, 일반적으로 사용자는이를 눌러 프레젠테이션 바 오버 플로우 나 옵션 메뉴를 얻는 데 익숙합니다. 사용자는 일반적으로 그것을 누르거나 다른 것을 얻는 데 익숙하지 않습니다. 이는 Android가 처음 출시 된 이래로 UX의 안티 패턴이었습니다. 메뉴 버튼이있는 곳에서 정상 동작 표시 줄이나 옵션 메뉴를 작동하도록하십시오. 부수적 인 이점으로,이 질문에서 문제가되는 해킹을 피할 수 있습니다. – CommonsWare

답변

0

onCreateContextMenu에 버그가있어서 시간 제한 메뉴가 표시되지 않는 것으로 나타났습니다. 사실 그것은 메뉴로 항목을 채우지 않았고, 빈 메뉴는 안드로이드의 핵심 부분에서 건너 뛰었습니다. 이제 예상대로 작동합니다.