안드로이드 팝업 창의 키보드 숨기기 문제

1871 단어
최근 프로젝트 개발에서 테스트에서 이러한 버그가 발생했습니다. 팝업 대화상자가 닫힌 후 키보드가 숨겨지지 않습니다.팝업 상자에 EditText가 있기 때문에 키보드가 팝업됩니다.처음에 이 문제를 보았을 때 매우 간단하다고 느꼈다.다음과 같이 수정되었습니다.

DaShangPopup payPopup =new DaShangPopup(LiveDetailActivity.this);

payPopup.setSureText("  ");

payPopup.setOnClickListener(newView.OnClickListener() {

  @Override

  public void onClick(View v) {

    if(v.getId() == R.id.sure) {

      String pwd =payPopup.getPwd();

      payMoney(pwd);

  }

  //    ,inputEt    

  hideSoftKeyboard();

  InputMethodManager inputmanger = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);

  inputmanger.hideSoftInputFromWindow(inputEt.getWindowToken(),0);

}

});

payPopup.showAtLocation(LiveDetailActivity.this.getContentView(),Gravity.CENTER,0,0);


작동 후 작동하지 않습니다.왜 효과가 없지?hideSoftInputFromWindow의 논리를 보십시오.

public boolean hide SoftInputFromWindow(IBinder windowToken, intflags) {

  return  hideSoftInputFromWindow(windowToken,flags, null);

}



public boolean hideSoftInputFromWindow(IBinder windowToken, intflags,

ResultReceiver resultReceiver) {

  checkFocus();

  synchronized(mH) {

    if(mServedView==null||mServedView.getWindowToken() != windowToken) {

    return false;

  }

  try{
  
  returnmService.hideSoftInput(mClient,flags,resultReceiver);

  }catch(RemoteException e) {

  }

  return false;

  }

}


여기를 보면 왜 반응이 없는지 알 수 있다. 탄창이 모두 사라졌고 윈도우 Token은 당연히 자연히null로 돌아왔다.
문제 해결 방법을 찾으면 간단합니다. 팝업 윈도를 다시 쓰는 onDismiss 방법은 창이 사라지기 전에 키보드를 숨기면 됩니다.코드는 다음과 같습니다.

@Override

public void dismiss() {

  InputMethodManager mInputMethodManager = (InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE);
  mInputMethodManager.hideSoftInputFromWindow(pwdEt.getWindowToken(),InputMethodManager.RESULT_UNCHANGED_SHOWN);
  super.dismiss();
}

좋은 웹페이지 즐겨찾기