刚刚在写一个仿微信的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触发的软键盘

更多相关文章

  1. Android(安卓)安全机制
  2. Android网络请求框架AsyncHttpClient详解(整理)
  3. Android之traceview使用
  4. Android(安卓)对话框(Dialog)大全 建立你自己的对话框
  5. Android跨进程数据通讯-剪切板Clipboard
  6. android--系统jar包引用
  7. Android消息处理机制(Handler、Looper、MessageQueue与Message)
  8. android : 修改frameworks/base/ 代码需要注意的地方
  9. [原]Android系统进程Zygote启动过程的源代码分析

随机推荐

  1. Android杂谈---res目录说明&android单位
  2. Android 返回键双击退出程序
  3. Android(安卓)Webkit简单用例
  4. Android之WebView使用小技巧
  5. react-native Android极光推送配置
  6. Android热点、WiFi、蓝牙等功能开启和关
  7. 【Android UI】ViewFlipper实现广告轮播
  8. android 打开另外一个apk并且传值过去
  9. Activity之间的通信
  10. 指纹识别分析之enroll流程