如果一个edittext当前被聚焦并且用户在DialogFragment之外点击;我希望屏幕键盘消失。当 DialogFragment 以这种方式被解雇时,我可以让它工作:
InputMethodManager imm;
public View onCreateView(LayoutInflater inflator, ViewGroup container,
Bundle savedInstanceState) {
imm = (InputMethodManager)getActivity().getSystemService(Activity.INPUT_METHOD_SERVICE);
...}
@Override
public void dismiss(){
imm.hideSoftInputFromWindow(getView().getWindowToken(), 0);
super.dismiss();
}
但是,如果我在通过触摸对话框片段外部取消它时尝试相同的操作,它将不起作用。我试图通过像这样覆盖 onCancel 来做到这一点:
@Override
public void onCancel(DialogInterface dialog){
imm.hideSoftInputFromWindow(getView().getWindowToken(), 0);
super.onCancel(dialog);
}
当外部触摸事件发生时调用该函数,但键盘没有被移除。