0

EditText を含むいくつかのフラグメントを持つ FragmentActivity があります。キーボードを開いてカスタム ナビゲーション (フラグメントの切り替え) を使用すると、キーボードが閉じません。

アクティビティ onCreate でそのメソッドを呼び出します。

private void initKeyboardHandler(){
        getSupportFragmentManager().addOnBackStackChangedListener(new OnBackStackChangedListener() {

            @Override
            public void onBackStackChanged() {
                InputMethodManager imm = (InputMethodManager)getSystemService(
                          Context.INPUT_METHOD_SERVICE);
                imm.hideSoftInputFromWindow(findViewById(android.R.id.content).getWindowToken(), 0);
            }
        });
    }

デバッグ後、問題はウィンドウトークンにあると思います。それとも別のものですか?

4

1 に答える 1

3

これを試してキーボードを閉じ、そのインスタンスを取得してください:

  InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);

次に閉じます。

imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);

編集:

imm が null でない場合、この行の前にチェックするとどうなりますか:

if(imm != null)
{
    imm.toggleSoftInput(0, InputMethodManager.SHOW_IMPLICIT);
}
于 2013-04-17T14:44:18.103 に答える