【Android】不同的View引起軟鍵盤無法關閉問題解決方案

     今天發現一個很奇怪的問題軟鍵盤無法關閉了,同一段代碼,換一個Activity就能正常執行,開始我以爲是嵌套了fragment的原因,然後我放到外層activity裏面同樣不能調用,比較了下其他Activity正常關閉的不同點,除了fragment就是dialog了,在這個界面裏面的編輯框是放在一個彈出框dialog裏面的,本來想優化的效果就是點取消或確定時候 軟鍵盤退出關閉,最後把關閉代碼放到dialog裏面,getWindow由dialog調用,就能正常關閉了。

原來代碼:

/**
     * 關閉軟鍵盤
     */
    public void KeyBoardCancle() {
        View view = getActivity().getWindow().peekDecorView();
        if (view != null) {
            InputMethodManager inputmanger = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
            inputmanger.hideSoftInputFromWindow(view.getWindowToken(), 0);
        }
    }

修改之後:

 /**
     * 關閉軟鍵盤
     */
    public static void KeyBoardCancle(Dialog dialog) {
        View view =dialog.getWindow().peekDecorView();//注意:這裏要根據EditText位置來獲取
        if (view != null) {
            InputMethodManager inputmanger = (InputMethodManager) MyApplication.getInstance().getSystemService(Context.INPUT_METHOD_SERVICE);
            inputmanger.hideSoftInputFromWindow(view.getWindowToken(), 0);
        }
    }



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章