android 소프트 키보드가 팝업된 경우 백업 이벤트

1529 단어
최근 프로젝트 개발에서 문제가 발생했습니다. 텍스트 입력이 있고 키보드가 튀어나올 때 되돌아오는 키를 정상적으로 누르고 키보드를 닫으며 activity를 종료하지 않는 것이 정상입니다.그러나 수요의 정의를 막을 수가 없어요. 사람들이 버그라고 생각하고 되돌아오기 버튼을 누르면 바로 페이지를 닫는다고 해요.알이 아프다.
기본적으로 SoftInput이 표시될 때, Back 키는 입력법에 우선적으로 맡기고, 이 때 Back은 입력법만 닫습니다.입력란이 있는 Activity를 종료하려면 Back을 더 눌러야 합니다.
키보드를 팝업할 때 activity가 백 이벤트를 얻을 수 있도록 하려면 디스패치 Key Event PreIme 방법을 사용자 정의해야 합니다. 이 방법의 역할은 입력법이 존재하면 키 메시지가 입력법 창에 먼저 전송되고 입력법이 메시지를 캡처하기 전에 이 메시지를 처리하려면 이 함수를 다시 불러올 수 있습니다.
구체적인 실현은 다음과 같다.
public class KeyBackEditText extends EditText { 
   public KeyBackEditText(Context context) {      
          super(context);   
    }   
   public KeyBackEditText(Context context, AttributeSet attrs) { 
        super(context, attrs);                                                                                                                                 
   }   
   public KeyBackEditText(Context context, AttributeSet attrs, int defStyleAttr) {       
       super(context, attrs, defStyleAttr);  
    }   
   @Override    
   public boolean dispatchKeyEventPreIme(KeyEvent event) {       
       if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
           ((Activity)this.getContext()).onBackPressed(); 
          //  api  2.0          
          //                   ((Activity)this.getContext()).onKeyDown(KeyEvent.KEYCODE_BACK, event);         
            return true;       
       }       
       return super.dispatchKeyEventPreIme(event);   
   }
}

이렇게 하면 물리적 반환 사건을 인터페이스로 되돌려 처리할 수 있다

좋은 웹페이지 즐겨찾기