Android疑难杂症之Dialog消失,关闭输入法

由于项目需要,实现一个小需求:

1) 有一个功能是弹出一个输入框,自动弹出输入法
2)关闭时 ,自动隐藏输入法

感觉很简单的一个功能,页面做完后发现,输入法没有弹出来
怎么办?

这个很简单,手动打开输入法好了,关闭页面也可以手动关闭
下面是开启输入法 和 关闭输入法的方法

    public static void openKeybord(EditText editText, Context context) {
        InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.showSoftInput(editText, InputMethodManager.RESULT_SHOWN);
        imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);
    }

    /**
     * 避免 输入框为空,延迟后也会提高用户体验
     * @param mEditText
     * @param mContext
     */
    public static void openKeybordDelay(final EditText mEditText, final Context mContext) {
        Timer timer = new Timer();
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                openKeybord(mEditText, mContext);
            }
        }, 100);
    }

    /**
     * 关闭软键盘
     *
     * @param editText
     * @param context
     */
    public static void closeKeybord(EditText editText, Context context) {
        InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
    }

本以为功能搞定,没想到的是,关闭输入法,无论在onDissmissLisener回调接口还是在onCancelListener中调用都无法隐藏输入法。
在经过查找资料发现是Dialog已经消失,所有无法取消输入法,所以解决方法:只需要在取消Dialog之前调用就好了

   @Override
    public void dismiss() {
        //避免闪屏 提高用户体验
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                InputDialog.super.dismiss();
            }
        },500);
        KeyBoardHelper.closeKeybord(editText,getContext());
    }

至此,大功告成!

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

推荐阅读更多精彩内容

  • 应当是一个黑匣子 里头藏这少女的无尽心事
    诺凉阅读 127评论 0 0
  • 《六项精进》打卡第二十天 日期:2017.10.14 姓名:黄晓明 单位:温州市博奕成套设备工程有限公司 组别:反...
    黄晓明_f18e阅读 109评论 0 0
  • 方圆是单位出了名讲求原则之人,而这些原则,多半是他自己给定的,小至日常起居,大至立身处事,都有一套自己的原则。 洗...
    兰之猗阅读 542评论 9 6
  • 平凡之前路 写在去西藏之前 某日 关于这篇文章的题目,还没有想好。或许只能旅行回来,才能定下来。但是在准备阶段,心...
    佘小秋阅读 1,020评论 20 33