Android异常 隐藏输入法键盘时InputMethodManager.hideSoftInputFromInputMethod

隐藏Android输入法键盘时,调用的方法如下:

public void hideInput(Activity activity){
    InputMethodManager imm = (InputMethodManager) getActivity()
                .getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(activity.getCurrentFocus().getApplicationWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}

产生异常信息如下:

08-04 16:20:43.009  1453  1453 E AndroidRuntime: Caused by: java.lang.NullPointerException
08-04 16:20:43.009  1453  1453 E AndroidRuntime:    at com.xx.McpttApp.hideInput(McpttApp.java:451)
08-04 16:20:43.009  1453  1453 E AndroidRuntime:    at com.xx.main.contacts.FilterActivity.onBackButtonClick(FilterActivity.java:305)
08-04 16:20:43.009  1453  1453 E AndroidRuntime:    ... 14 more
08-04 16:20:43.019   495   506 I ActivityManager: Notify an ApplicationCrash
08-04 16:20:43.019   495   506 W ActivityManager:   Force finishing activity com.xx/.main.contacts.FilterActivity
08-04 16:20:43.589   495   549 W ActivityManager: Activity pause timeout for ActivityRecord{41f58cd0 com.xx/.main.contacts.FilterActivity}

异常原因分析:
该方法直接调用activity.getCurrentFocus().getApplicationWindowToken();此处容易产生空指针异常。
举例:若设备同时支持按键和触屏,当通过按键输入过滤字母或数字时,进入FilterActivity,此时没有通过EditText输入框进行输入,所以没有弹出输入法键盘,此时activity.getCurrentFocus() 为null,若不判断直接执行activity.getCurrentFocus().getApplicationWindowToken(),则报空指针NullPointerException异常。
所以对可能产生Null对象的地方应该加上判断,不然的话应用会crash。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值