需求:界面(activity)finish消失的同时,如果软键盘显示,则让其隐藏
方案一:
@Override
protected void onDestroy() {
super.onDestroy();
InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
if (imm != null) {
imm.hideSoftInputFromWindow(getWindow().getDecorView().getWindowToken(), 0);
}
}
以上方法在一个界面(dialog形式的acitivity)是可以的,但是在另一个界面(正常的,占满整个屏幕的activity)却不行了。还没找出具体原因。
方案二:
放在结束界面的监听事件中:
case R.id.rlBackArrow:
hideInput(this, etContent);
finish();
break;
private void hideInput(Context context, View view) {
InputMethodManager inputMethodManager =
(InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
在finish之前隐藏键盘,问题就解决了
一些基础知识: