在我的片段中,我调用一个DialogFragment,然后调用
getDialog().dismiss();
并将其保存在我的onDismiss()
中@Override
public void onDismiss(DialogInterface dialog)
{
InputMethodManager imm =
(InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm.isActive())
imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
super.onDismiss(dialog);
}
但是由于某种原因,当我回到该片段时,似乎已经弹出了键盘,我尝试了各种尝试,包括试图将键盘隐藏在片段的回调中,但是似乎没有任何作用。
答案 0 :(得分:1)
在我的片段中,我打电话给
DialogFragment
,然后打电话给
尝试一下:
public static void hideKeyboard(Activity activity) {
InputMethodManager imm = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE);
//Find the currently focused view, so we can grab the correct window token from it.
View view = activity.getCurrentFocus();
//If no view currently has focus, create a new one, just so we can grab a window token from it
if (view == null) {
view = new View(activity);
}
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
在您的代码中
@Override
public void onDismiss(DialogInterface dialog)
{
super.onDismiss(dialog);
hideKeyboard(getActivity());
}
在清单文件中使用stateAlwaysHidden
<activity
android:screenOrientation="portrait"
android:name=".chat.activity.ChatActivity"
android:windowSoftInputMode="stateAlwaysHidden|adjustResize">
</activity>
答案 1 :(得分:0)
因为您正在使用toggleSoftInput(int showFlags, int hideFlags)
来切换软键盘的状态。来自文档
This method toggles the input method window display.
您可以使用hideSoftInputFromWindow()
来强制Android使用InputMethodManager
隐藏虚拟键盘,调用hideSoftInputFromWindow
,传入包含您关注的view
的窗口令牌。
View view = this.getCurrentFocus();
if (view != null) {
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
答案 2 :(得分:0)
如果您位于片段中,请尝试以下代码
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWaYS_HIDDEN);
或者如果您正在活动中:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWaYS_HIDDEN);
请确保在设置内容视图之前或在扩展视图之前执行该操作