如何在按下Android手机上的Home键后隐藏键盘

3
我正在展示一份带有消息列表,每个消息行都有一个评论按钮。当我点击评论按钮时,会打开一个评论框,其中包含编辑文本和提交评论的按钮。当评论框出现在屏幕上时,键盘也会出现以输入文本。如果我在输入文本之前按下主页按钮,则应用程序会进入后台,但键盘仍然保持在屏幕上。这是令我烦恼的事情。对于自定义列表,我正在使用自定义适配器,并且评论框的代码编写在该适配器中。我尝试使用,但它不起作用。那么我如何在程序中隐藏这个键盘呢?
3个回答

0
请使用该方法隐藏软键盘。
public static void hideSoftKeyboard(Activity context) {
        InputMethodManager inputManager = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
        if (inputManager != null)
        inputManager.hideSoftInputFromWindow(context.getWindow().getDecorView().getApplicationWindowToken(), 0);
        context.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

    }

当你按下主页按钮时,只需调用这个方法,我认为它会起作用。;-) 请在你想隐藏软键盘的时候更新你的代码。 - bhavesh kaila
我正在onPause()中调用这个方法。 - Ak10147
我认为当你按下主页按钮时,你必须调用这个方法。然后软键盘就会隐藏。 - bhavesh kaila

0

我正在4.2上进行测试。我尝试过这个方法,但是没有起作用。 - Ak10147

0

KeyEvent.KEYCODE_HOME 无法被拦截。您可以在活动的 onStop() 方法中隐藏键盘 inputmgr.hideSoftInputFromWindow(getWindow().getDecorView().getWindowToken(), 0);

它不需要来自聚焦视图 editText 的令牌。


@Nava2011的答案更好。对于这个问题,您可以在适配器类中创建一个方法,并从活动中调用它。 - Pr38y
EditText 返回 null。 - Ak10147
修改了答案,请现在检查。直接从您的活动的 onStop() 中调用它。 - Pr38y

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接