对话框closures时隐藏软input键盘

我从一个Activity打开一个Dialog 。 当对话框打开时,我打电话

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

问题是,当我通过点击一个取消button或点击对话框之外的closures对话框,键盘切换到文本键盘,并没有消失util我点击硬件后退button。 如何解除对话框closures键盘,焦点返回到前一个窗口?

Related of "对话框closures时隐藏软input键盘"

AndroidManifest.xml中 ,在显示对话框的 Activity中设置这个属性

机器人:windowSoftInputMode = “stateAlwaysHidden”

注意! 不是stateHiddent ,是stateAlwaysHidden 。 它会自动隐藏软键盘上closures对话框。

希望拯救你的生命。

我想这个活动的方法可以对你有用。

  @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 } } 
 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(); 

在我的情况下,解决scheme是把键盘隐藏在对话框中

 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); } } }); 

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

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

或者在清单xml中

 android:windowSoftInputMode="stateAlwaysHidden" 

它会自动隐藏软键盘上closures对话框