0

소프트 키보드가 표시되고 숨겨져 있는지 감지하고 싶습니다.android soft keyboard : onReceiveResult RESULT_SHOWN이 (가) 즉시 RESULT_HIDDEN에 이어집니다.

public class ALEditText extends EditText { 
    private ALSoftInputListener mSoftInputListener; 

    private static class SoftInputReceiver extends ResultReceiver { 
    private static final int RESULT_UNCHANGED_HIDDEN = 1; 
    private static final int RESULT_SHOWN = 2; 
    private static final int RESULT_HIDDEN = 3; 
    private static final int RESULT_UNCHANGED_SHOWN = 0; 
    private ALSoftInputListener mListener; 

    public SoftInputReceiver(ALSoftInputListener listener) { 
     super(null); 
     this.mListener = listener; 
    } 

    public void onReceiveResult(int result, Bundle data) { 
     switch (result) { 
     case RESULT_UNCHANGED_SHOWN /*0*/: 
     case RESULT_SHOWN /*2*/: 
      if (this.mListener != null) { 
      this.mListener.onSoftInputShown(); 
      } 
     case RESULT_UNCHANGED_HIDDEN /*1*/: 
     case RESULT_HIDDEN /*3*/: 
      if (this.mListener != null) { 
      this.mListener.onSoftInputHidden(); 
      } 
     default: 
     } 
    } 
    } 

    public void showSoftInput() { 
    SoftInputReceiver receiver = new SoftInputReceiver(this.mSoftInputListener); 
    InputMethodManager imm = getInputMethodManager(); 
    imm.showSoftInput(this, 0, receiver); 
    } 

    public void HideSoftInput() { 
    SoftInputReceiver receiver = new SoftInputReceiver(this.mSoftInputListener); 
    InputMethodManager imm = getInputMethodManager(); 
    imm.hideSoftInputFromWindow(getWindowToken(), 0, receiver); 
    } 

    public void SetSoftInputListener(ALSoftInputListener listener) { 
    this.mSoftInputListener = listener; 
    } 

    protected InputMethodManager getInputMethodManager() { 
    return (InputMethodManager) getContext().getSystemService("input_method"); 
    } 

} 

하지만 난 내가 showSoftInput을 수행 할 때 다음 가상 키보드 쇼 onSoftInputShown도 제기되는 이벤트이지만 즉시 onSoftInputHidden 다음 것, 이해할 수없는 이상한 행동을 가지고이를 위해 나는이 좋아해요 그리고 키보드는 여전히 보입니다! 나중에 키보드를 숨기면 onSoftInputHidden 이벤트가 다시 호출되지 않습니다 ... 누군가가 내게 무슨 일이 일어 났는지 설명 할 수 있습니까?

답변

0

나는 문제를 발견했다. 왜냐하면 나는 그 사건에서 휴식을 잊어 버렸기 때문이다.