0

こんにちは、このコードを入力して Android のソフト キーボードを非表示にしようとしていますが、null ポインターが返されます。

コード:

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 に答える