我在从Spinner
中选择项目后尝试隐藏键盘,但代码无法正常工作且没有任何反应。但在另一方面,相同的代码在普通片段中起作用。
以下是隐藏键盘的方法:
public static void hideKeypad(Activity activity) {
View view = activity.getCurrentFocus();
if (view != null) {
InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
}
答案 0 :(得分:0)
这对我来说是一个片段
public void removePhoneKeypad() {
if(getActivity().getCurrentFocus()!=null &&getActivity().getCurrentFocus().getWindowToken() != null) {
System.out.println("getCurrentFocus() in frag");
InputMethodManager inputManager = (InputMethodManager) rootView
.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
IBinder binder = getActivity().getCurrentFocus().getWindowToken();
inputManager.hideSoftInputFromWindow(binder,
InputMethodManager.HIDE_NOT_ALWAYS);
}
getActivity().getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
}
答案 1 :(得分:0)
您需要指定rootView
的{{1}},因为在您的方法中,它会看到Fragment
,因此它永远不会转到代码的其余部分。
这是正确的代码:
getCurrentFocus() == null
创建一个类变量public static void hideKeypad(Activity activity, View view) {
if (view != null) {
InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
}
并将其与View
中rootView
的{{1}}相等,并在此Fragment
中的任意位置使用此方法。< / p>