2011-06-11 3 views
0

alertDialog를 표시 할 때 전역 검색 키를 비활성화하려고합니다. 따라서 클래스를 확장하고 dispatchKeyEvent 메소드를 다시 작성하여 키 메시지를 수신합니다. 그러나 AlertDialog 창에서 검색 키를 누르면 키 이벤트를 catch 할 수 없습니다. 왜?AlertDialog를 확장하고 dispatchKeyEvent 메서드를 다시 작성한 후에 사용하지 마십시오.

@Override 
public boolean dispatchKeyEvent(KeyEvent event) { 
    if(event.getKeyCode() == KeyEvent.KEYCODE_SEARCH) 
     return true; 
    return super.dispatchKeyEvent(event); 
} 
+0

나는 내 애플 리케이션에서 이것을 시도하고있다. 사용자 정의 대화 상자 소스를 제공 할 수 있습니까? – woodshy

답변

1

나는이 문제를 해결하는 방법을 발견 : 여기

새로운 dispatchKeyEvent에 방법의 코드입니다. AlertDialog를 확장하지 말고 빌더를 확장하십시오. 그리고 생성자에서 아래 코드를 작성하십시오.

setOnKeyListener(new OnKeyListener() { 
     @Override 
     public boolean onKey(DialogInterface dialog, int keyCode, 
       KeyEvent event) { 
      if(event.getKeyCode() == KeyEvent.KEYCODE_SEARCH) 
       return true; 
      return false; 
     } 

    }); 

그러면 글로벌 검색 키를 찾아 놓을 수 있습니다.