首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);时提供空指针

在使用InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);时提供空指针
EN

Stack Overflow用户
提问于 2012-06-08 09:50:09
回答 1查看 3.3K关注 0票数 0

嗨,我正在尝试输入这段代码来隐藏android上的软键盘,但它返回了一个空指针。

代码:

代码语言:javascript
复制
public void testSetTestEnvironment (){
    solo.clickInList(4);
    solo.clickOnMenuItem(ConfigVariables.CATALOGSERVER);
    assertTrue(solo.searchText(ConfigVariables.CATALOGSERVERURL));


    //Enter KeyCode
     solo.clickInList(5);

    View myEditText = solo.getViews().get(0);
    InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(myEditText.getWindowToken(), InputMethodManager.HIDE_IMPLICIT_ONLY);

    solo.enterText(solo.getEditText(0), "");
    solo.enterText(0, ConfigVariables.KEYCODE);

    assertTrue(popupClickButtonHandler("Enter KeyCode", "OK"));

日志显示:

java.lang.NullPointerException

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2013-02-27 23:11:08

也许有点太晚了,但我希望这对某些人有帮助。您的代码容易出现bug,因为它依赖于一个焦点视图来获取窗口令牌。

尝试使用:

代码语言:javascript
复制
InputMethodManager im = (InputMethodManager) this.getApplicationContext().getSystemService(Context.INPUT_METHOD_SERVICE);
im.hideSoftInputFromWindow(getWindow().getDecorView().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);

这段代码对我来说是正确的。

venator85摘自this answer

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10942152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档