【移动开发】 Android隐藏输入法软键盘的一些说明
16lz
2021-01-24
刚刚在写一个仿微信的Android聊天软件,在编写的过程中,发现一个严重的BUG---当用户点击输入框用软键盘输入文本的时候点击了"返回好友列表"的按钮,返回到好友列表时软键盘无法关闭.
于是我才上网找了一些关于Android如何隐藏输入法的网页看了一下.发现普遍的方法如下:
((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).
hideSoftInputFromWindow(MyActivity.this.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
MyActivity是当前的Activity
当时当我将代码加入到返回按钮的点击事件后发现,当用户点击了返回按钮时,App异常退出,也没有报错.这是为什么呢?于是我查询了一下Android开发官网.发现实现以上功能的代码应该这样写:
((InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE)).
hideSoftInputFromWindow(editview.getWindowToken(),InputMethodManager.HIDE_NOT_ALWAYS);
editview是输入框
之所以用第二段代码能够实现所需功能,是因为第二段代码是关闭整队输入框的输入法.而第一段代码针对的是整个Acitivity.而实际条件下输入法是在输入框获得焦点时打开的.而不是在Activity全局打开的,所一第一段代码无法起效,而且会异常退出.
于是我才上网找了一些关于Android如何隐藏输入法的网页看了一下.发现普遍的方法如下:
((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).
hideSoftInputFromWindow(MyActivity.this.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
MyActivity是当前的Activity
当时当我将代码加入到返回按钮的点击事件后发现,当用户点击了返回按钮时,App异常退出,也没有报错.这是为什么呢?于是我查询了一下Android开发官网.发现实现以上功能的代码应该这样写:
((InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE)).
hideSoftInputFromWindow(editview.getWindowToken(),InputMethodManager.HIDE_NOT_ALWAYS);
editview是输入框
之所以用第二段代码能够实现所需功能,是因为第二段代码是关闭整队输入框的输入法.而第一段代码针对的是整个Acitivity.而实际条件下输入法是在输入框获得焦点时打开的.而不是在Activity全局打开的,所一第一段代码无法起效,而且会异常退出.
当然在某些游戏中用到的输入法软键盘也许是针对Activity全局打开的.所以在用关闭软键盘的代码时一定要注意,关闭之前是哪个控件触发的软键盘还是Activity触发的软键盘
http://jingyan.baidu.com/article/f79b7cb35c71439144023eca.html
更多相关文章
- Android(安卓)Studio 必备技巧:TODO 用法及自定义 TODO
- 很好的一些开源项目
- Android(安卓)ActionBar的源代码分析(一)
- ICS 系统栏分析(一)
- Android百度地图的简单实现
- 【Android(安卓)界面效果22】Android的Tab与TabHost
- android EditText软键盘隐藏总结
- Android(安卓)如何建立AIDL
- Android(安卓)Kotlin 开发--偶遇Rxjava、Retrofit进行网络请求