2012-08-15 3 views
5

소프트 키보드가 표시 될 때 뒤로 버튼을 무시하고 싶습니다. 기본적으로 뒤로 버튼이 눌려지면 키보드를 닫고 싶습니다. 사용자가 해당 텍스트 필드에 입력 한 텍스트를 추가하려고합니다. 그래서 기본적으로 키보드가 닫힐 때를 알아야합니다. 주위를 검색 한 후 API가 없다는 것을 깨달았습니다. 이렇게하는 유일한 방법은 EditText 클래스를 만드는 것입니다. Android 사용자 EditText 및 뒤로 버튼 덮어 쓰기

그래서 나는 내 자신의 EditText 클래스를 생성하고 나는 또한 키보드를 닫습니다,이 방법
@Override 
     public boolean dispatchKeyEventPreIme(KeyEvent event) 
     { 
      if (KeyEvent.KEYCODE_BACK == event.getKeyCode()) 
      { 
       Log.v("", "Back Pressed"); 

          //Want to call this method which will append text 
          //init(); 
      } 
      return super.dispatchKeyEventPreIme(event); 
     } 

이제이 방법은 뒤로 버튼을 무시하지

을 추가 한이

public class CustomEditText extends EditText 
{ 

    public CustomEditText(Context context) 
    { 
     super(context); 
     init(); 
    } 

    public CustomEditText(Context context, AttributeSet attrs) 
    { 
     super(context, attrs); 
     init(); 
    } 

    public CustomEditText(Context context, AttributeSet attrs, int defStyle) 
    { 
     super(context, attrs, defStyle); 
     init(); 
    } 

    private void init() 
    { 

    } 

} 

처럼 글고 치기를 확장 하지만 EditText 필드에 텍스트를 전달하는 방법을 모르겠습니다. 아무도 내가 이것을 어떻게 할 것인지 알고 있니?

또 다른 빠른 질문, 누구도이 방법이 두 번 호출되는 이유를 알고 있습니까? 당분간 알 수 있듯이 빠른 logcat 메시지를 추가하여 작동 여부를 테스트했지만 뒤로 버튼을 누르면 두 번 인쇄됩니다. 이유는 무엇입니까?

도움이 될 것입니다!

답변

5

ACTION_DOWNACTION_UP 모두에서 호출되는 dispatchKeyEventPreIme 때문입니다.
KEY down을 누른 경우에만 처리해야합니다. 당신은 왜 두 번 dispatchKeyEventPreIme

+0

아, 어리석은 나를 실현해야합니다. 하지만 내 다른 질문에 관해서. 키보드를 닫을 때 텍스트를 EditText 필드로 전달하는 방법을 알고 있습니까? – AdamM

+0

수정 사항을 확인하십시오. – nandeesh

+0

간단한 수정. 고마워요, 완벽하게 작동합니다! – AdamM

3

setText(getText().toString() + " whatever you want to append"); 

을 할 수있는 첫 번째 질문에 대한 : 그래서

if(event.getAction() == KeyEvent.ACTION_DOWN)

편집을 사용하여? 아마도이 방법은 프레스 다운 및 업 이벤트에서 호출됩니다.