如何在片段中隐藏键盘?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在片段中隐藏键盘?相关的知识,希望对你有一定的参考价值。

我使用此方法隐藏键盘。

InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(INPUT_METHOD_SERVICE);
View v = getActivity().getWindow().peekDecorView();
if (null != v) {
    imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
}

但是有时它可能会抛出NullPointerException,并且键盘未被隐藏。

具有java.util.concurrent.CompletionException的同步设备:java.lang.NullPointerException:尝试在null上调用虚拟方法'java.lang.Object androidx.fragment.app.FragmentActivity.getSystemService(java.lang.String)'对象参考

我已经通过重写方法onAttach保存了活动实例,并使用

activity.getSystemService(INPUT_METHOD_SERVICE);

但是它不起作用。

答案

尝试这些代码,希望对您有所帮助。

显示软键盘:

public void showSoftKeyboard(View view){
if(view.requestFocus()){
    InputMethodManager imm =(InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.showSoftInput(view,InputMethodManager.SHOW_IMPLICIT);
}

您可以使用InputMethodManager强制Android隐藏虚拟键盘,调用hideSoftInputFromWindow,传入包含您的编辑字段的窗口的标记。

public void hideSoftKeyboard(View view){
  InputMethodManager imm =(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
  imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}

来自片段或活动。快乐编码

以上是关于如何在片段中隐藏键盘?的主要内容,如果未能解决你的问题,请参考以下文章

在片段替换上显示/隐藏 Android 软键盘

软输入键盘隐藏编辑文本

打开键盘隐藏片段下方的工具栏

如何隐藏片段中首选项之间的分隔符

android在特定片段中隐藏工具栏

仅在一个片段中隐藏状态栏并在其他片段中显示