0

嗨,我正在尝试输入这段代码来隐藏 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

谢谢。

4

1 回答 1

4

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

尝试使用:

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

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

取自venator85这个答案

于 2013-02-27T15:11:08.237 回答