对话框关闭时隐藏软输入键盘

时间:2012-10-08 04:19:08

标签: android android-softkeyboard android-dialog

我正在Dialog内打开Activity。对话框打开后,我调用

((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);

问题是,当我通过点击取消按钮或点击对话框外部关闭对话框时,键盘切换到文本键盘并且不会消失工具我单击硬件返回按钮。如何在关闭对话框时关闭键盘,并将焦点返回到上一个窗口?

5 个答案:

答案 0 :(得分:9)

AndroidManifest.xml 中,在活动中设置此属性,以显示对话框

  

机器人:windowSoftInputMode =" stateAlwaysHidden"

请注意!不是 stateHiddent stateAlwaysHidden 。它会在Dismiss of Dialog上自动隐藏软键盘。

希望拯救你的生命。

答案 1 :(得分:1)

AlertDialog.Builder builder = new AlertDialog.Builder(EllipticalActivity.this);
builder.setTitle("title")
       .setMessage("message")
       .setCancelable(false)
       .setNegativeButton("Close", new DialogInterface.OnClickListener() {
           public void onClick(DialogInterface dialog, int id) {
               InputMethodManager inputManager = 
                   (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
               inputManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(),
                                                    InputMethodManager.HIDE_NOT_ALWAYS);
               dialog.cancel();
           }
        });
        AlertDialog alert = builder.create();
        alert.show();

答案 2 :(得分:1)

我想这种活动方法对你有用。

    @Override
    public void onWindowFocusChanged(boolean hasFocus) {
        // TODO Auto-generated method stub
        super.onWindowFocusChanged(hasFocus);
        if(hasFocus)
        {
            Toast.makeText(MainActivity.this, "has focus", Toast.LENGTH_LONG).show();
                        // write code to remove keyboard
        }
    }

答案 3 :(得分:0)

在我的情况下,解决方案是将键盘隐藏在对话框中解除

dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
    @Override
    public void onDismiss(DialogInterface dialog) {
        View view = activity.getCurrentFocus();
        if (view != null) {
            InputMethodManager inputManager = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
            inputManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
        }
    }
}); 

答案 4 :(得分:0)

从Activity onCreateView()方法,你可以这样做:

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN)

或In Manifest xml

android:windowSoftInputMode="stateAlwaysHidden"

它会在Dismiss of Dialog

上自动隐藏软键盘