hideSoftInputFromWindow方法失效问题解决

问题:

在处理一个事件之后显示一个EditView,此EditView获取焦点并显示软键盘,onStop中调用hideSoftInputFromWindow,软键盘不能自动收起。

EditView获取焦点
mSearchInput.setFocusable(true);
                mSearchInput.setFocusableInTouchMode(true);
                mSearchInput.requestFocus();
                mSearchInput.findFocus();
弹出软键盘
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        if (imm != null) {
            imm.showSoftInput(view, InputMethodManager.SHOW_FORCED);
        }
隐藏软键盘
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        if (imm != null && view != null) {
            imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
        }

此方法在onStop中调用时失效。

原因:

软键盘显示时参数:

/**
     * Flag for {@link #showSoftInput} to indicate that the user has forced
     * the input method open (such as by long-pressing menu)  so it should
     * not be closed until they explicitly do so.
     */
    public static final int SHOW_FORCED = 0x0002;

非强制不收起。此参数导致hideSoftInputFromWindow失效

修改方式:

将SHOW_FORCED 替换为SHOW_IMPLICIT隐式请求软键盘。

imm.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT);

解决,记录。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前天在朋友圈发了一个“思维导图全系列”的链接,一个美女朋友说了句“你还真能坚持”让我激动得一连几天都想着这句话,也...
    礼明阅读 417评论 1 3
  • 或许当世界停止,时间不再穿梭,日子一天一天的老去,或许当稚嫩的心不再炽热,肩膀不再有重量,胸膛也不再是殿堂。或许当...
    落日听雨轩阅读 227评论 0 0
  • 如果早上醒来感觉到疲倦睡不够,浑身不轻松,那就请你跟着我尝试一下坐享这个方法。 从床上爬起来,别妄想着靠多睡十分二...
    还有谁叫包哥阅读 307评论 0 0
  • 惠民公园里,湖面,平静得仿佛一面明镜。深蓝色的夜空,一轮圆月,像极了姑娘微笑的脸庞。 路边店铺,仍然灯火通明。附近...
    俞壹阅读 356评论 4 11
  • 今日感恩: 1.感恩小芳姐的顶力相助,愿意借钱给我度过困难时期。 2.感恩红姐的发心和费心引领,帮我介绍项目,并愿...
    露颖_阅读 207评论 0 0