今天發現一個很奇怪的問題軟鍵盤無法關閉了,同一段代碼,換一個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);
}
}