0

我有一个 FragmentActivity,其中包含一些包含 EditText 的片段。如果我打开键盘并使用我的自定义导航(切换片段),键盘不会关闭。

我在活动 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 不为空,则在此行之前检查会怎样:

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