刚刚在写一个仿微信的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全局打开的,所一第一段代码无法起效,而且会异常退出.

当然在某些游戏中用到的输入法软键盘也许是针对Activity全局打开的.所以在用关闭软键盘的代码时一定要注意,关闭之前是哪个控件触发的软键盘还是Activity触发的软键盘


http://jingyan.baidu.com/article/f79b7cb35c71439144023eca.html

更多相关文章

  1. Android(安卓)Studio 必备技巧:TODO 用法及自定义 TODO
  2. 很好的一些开源项目
  3. Android(安卓)ActionBar的源代码分析(一)
  4. ICS 系统栏分析(一)
  5. Android百度地图的简单实现
  6. 【Android(安卓)界面效果22】Android的Tab与TabHost
  7. android EditText软键盘隐藏总结
  8. Android(安卓)如何建立AIDL
  9. Android(安卓)Kotlin 开发--偶遇Rxjava、Retrofit进行网络请求

随机推荐

  1. Android(安卓)利用handler传递数据
  2. android 显示 网络图片
  3. Android/Java仿微信按时间长短分类显示时
  4. android 源码的一些修改定制方案
  5. Android:JNI Local Reference Changes in
  6. Android(安卓)7.0调用系统相机返回路径问
  7. Android监听Dialog点击外部区域
  8. Android输入框中提示自动输入内容
  9. 禁止状态栏下拉
  10. android 背光控制 HAL层分析