1. 程式人生 > >activity結束時(finish)用程式碼讓軟鍵盤隱藏(如果軟鍵盤顯示)

activity結束時(finish)用程式碼讓軟鍵盤隱藏(如果軟鍵盤顯示)

需求:介面(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之前隱藏鍵盤,問題就解決了

一些基礎知識:

Android 中InputMethodManager類的用法