片段

时间:2018-03-08 11:22:51

标签: android android-softkeyboard soft-keyboard

任务:当用户从Recent返回应用程序时,必须隐藏Soft_Keyboard。 (考虑从最近回到片段),在打开模式下不应该有Soft_Keyboard。

问题:当我从最近的模式回来时,Soft_keyboard仍然处于打开状态。

EFFORTS:要隐藏soft_keyboard,我在onStart(),onResume(),onCreate()以及Fragment中的自定义方法init()中执行了以下代码行。

代码:如下:

  1. 致电:CommonUtil.hideSoftKeyboard(getActivity());
  2. 行:

     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();
                }
            }
    
  3. ..我在[输入代码]中尝试了上面的代码但是,它仍然看起来像这样:希望你能理解。

    反正

    可能是什么解决方案? 感谢。

    注意:我不想使用 ADJUST_PAN 。 ;)

2 个答案:

答案 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()。 这对我来说就像一种魅力。...