使用InputMethodManager时给出空指针imm =(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);

时间:2012-06-08 01:50:09

标签: java android

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

代码:

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

感谢。

1 个答案:

答案 0 :(得分:4)

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

尝试使用:

InputMethodManager im = (InputMethodManager) this.getApplicationContext().getSystemService(Context.INPUT_METHOD_SERVICE);
im.hideSoftInputFromWindow(getWindow().getDecorView().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);

此代码适用于我。

摘自this answer <{3}}