我正在Dialog
内打开Activity
。对话框打开后,我调用
((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);
问题是,当我通过点击取消按钮或点击对话框外部关闭对话框时,键盘切换到文本键盘并且不会消失工具我单击硬件返回按钮。如何在关闭对话框时关闭键盘,并将焦点返回到上一个窗口?
答案 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
上自动隐藏软键盘