软键盘不会在安卓中以编程方式隐藏



我是Android的新手,正在制作警报对话框的演示,一旦单击警报中的一个按钮,我想关闭软键盘。我已经以编程方式尝试过,但键盘仍然打开,你能帮我解决这个问题吗?法典

  public void Show_Dialog() {
        final AlertDialog.Builder alertDialog = new AlertDialog.Builder(
                SwipeActivity.this);
        LayoutInflater inflater = this.getLayoutInflater();
        final View layout = inflater.inflate(R.layout.add_albom_dialog, null);
        alertDialog.setView(layout);
        final InputMethodManager inputManager = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
        //android:digits="abcdefghijklmnopqrstuvwxyz1234567890 "
        alertDialog.setPositiveButton("Create",
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        EditText txts = (EditText) layout
                                .findViewById(R.id.addAblum_edit);
                        hideSoftKeyboardDialogDismiss(SwipeActivity.this);
                        if(txts.getText().toString().trim().length() > 0) {
                            Add_album(txts.getText().toString());
                        } else {
                            AlertDialog alertDialog = new AlertDialog.Builder(SwipeActivity.this).create();
                            alertDialog.setTitle("Error");
                            alertDialog.setMessage("Name can't be emtpy");
                            alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK",
                                    new DialogInterface.OnClickListener() {
                                        public void onClick(DialogInterface dialog, int which) {
                                            dialog.dismiss();
                                            inputManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
                                            inputManager.hideSoftInputFromInputMethod(getCurrentFocus().getWindowToken(), 0);
                                        }
                                    });
                            alertDialog.show();
                        }
                        dialog.cancel(); // Your custom code
                    }
                });
        /* When negative (No/cancel) button is clicked */
        alertDialog.setNegativeButton("Cancel",
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        hideSoftKeyboardDialogDismiss(SwipeActivity.this);
                        dialog.cancel();
                        //  finish();
                    }
                });
        alertDialog.show();
    }

试试这个:

protected void hideSoftKeyboard(EditText mSearchView) {
    InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    mgr.hideSoftInputFromWindow(mSearchView.getWindowToken(), 0);
}
dialog.setOnDissmissListener(){
   void onDismiss(){
    inputManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
    inputManager.hideSoftInputFromInputMethod(getCurrentFocus().getWindowToken(), 0);
   }
} 
dialog.dismiss();

实际上必须有延迟,所以请使用此代码

  public static void hideSoftKeyboardDialogDismiss(final Activity activity) {
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            activity.runOnUiThread(new Runnable() {
                @Override
                public void run() {
                 InputMethodManager inputMethodManager =  (InputMethodManager) activity
                  .getSystemService(Activity.INPUT_METHOD_SERVICE);
                 if (null != activity.getCurrentFocus()) {
                  inputMethodManager.hideSoftInputFromWindow(activity
                   .getCurrentFocus().getWindowToken(), 0);
                  }
                }
            });
        }
    }, 1);
}

尝试按以下方式执行此操作

final InputMethodManager inputManager = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
final AlertDialog alertDialog = new AlertDialog.Builder(SwipeActivity.this).create();
                  alertDialog.setTitle("Error");
                  alertDialog.setMessage("Name can't be emtpy");
                  alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK",
                      new DialogInterface.OnClickListener() {
                          public void onClick(DialogInterface dialog, int which) {
                                 inputManager.hideSoftInputFromInputMethod(alertDialog.getCurrentFocus().getWindowToken(), 0);
                                 dialog.dismiss();
                          }
                  });
                 alertDialog.show();

使用alertDailog的当前焦点而不是您的活动

相关内容

  • 没有找到相关文章

最新更新