任务:当用户从Recent返回应用程序时,必须隐藏Soft_Keyboard。 (考虑从最近回到片段),在打开模式下不应该有Soft_Keyboard。
问题:当我从最近的模式回来时,Soft_keyboard仍然处于打开状态。
EFFORTS:要隐藏soft_keyboard,我在onStart(),onResume(),onCreate()以及Fragment中的自定义方法init()中执行了以下代码行。
代码:如下:
CommonUtil.hideSoftKeyboard(getActivity());
行:
public static void hideSoftKeyboard(Context context) {
try {
InputMethodManager inputMethodManager = (InputMethodManager) context.getSystemService(Activity.INPUT_METHOD_SERVICE);
View focusedView = ((Activity) context).getCurrentFocus();
//If no view is focused, an NPE will be thrown
if (focusedView != null) {
inputMethodManager.hideSoftInputFromWindow(((Activity) context).getCurrentFocus().getWindowToken(), 0);
}
} catch (Exception e) {
e.printStackTrace();
}
}
..我在[输入代码]中尝试了上面的代码但是,它仍然看起来像这样:希望你能理解。
反正
可能是什么解决方案? 感谢。
注意:我不想使用 ADJUST_PAN 。 ;)
答案 0 :(得分:0)
当我尝试从Fragment
关闭软键盘时,我也遇到了同样的问题,但我通过传递具有焦点的视图解决了问题,下面的代码对我来说很合适。
public void hideKeyboard(View view) {
if (view != null) {
InputMethodManager imm = (InputMethodManager)
getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
}
答案 1 :(得分:0)
当片段不再可见时,EditText视图仍然保持焦点,因此键盘仍然可见。 然而;当片段从可见过渡到不再可见时,可以按以下方式拦截执行:
...
override fun onStop() {
// Fragment transitions from visible to not visible
super.onStop()
hideSoftKeyboard()}
fun hideSoftKeyboard(){
myEditTextView1.clearFocus()
myEditTextView2.clearFocus()
//etc
}
...
如果不能确定哪个Edit文本视图具有焦点,则必须在从一个片段移到另一个片段时在所有视图上都清除Focus()。 这对我来说就像一种魅力。...