Android更改片段时隐藏键盘

ios*_*s85 9 android

当我改变片段.我使用它关闭键盘,因为屏幕上有一个EditText字段.我只是觉得必须有一个更好的方法,但我没有找到任何关于检测键盘是否在屏幕上的东西.

Activity activity = getActivity();
InputMethodManager inputMethodManager = (InputMethodManager)  activity.getSystemService(Activity.INPUT_METHOD_SERVICE);
try
{
    inputMethodManager.hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), 0);
}
catch (Exception e)
{

}
Run Code Online (Sandbox Code Playgroud)

Chr*_*ins -1

我能想到的唯一真正的方法是使用该onConfigurationChanged(Configuration config)方法:

KeyboardHiddenConfiguration的组合应该可以做到。

class MyFrag extends Fragment{

  @Override
  public void onConfigurationChanged(Configuration config){
    //Check flags
    switch(config.keyboardHidden){
      case KEYBOARDHIDDEN_NO:
        // do something
        break;
      case KEYBOARDHIDDEN_YES:
        break;
    }
  }

}
Run Code Online (Sandbox Code Playgroud)

当然,这依赖于您拥有清单和父活动来接受这些配置更改:

<activity ...
  android:configChanges="keyboardHidden|orientation|screenSize|screenLayout"/>
Run Code Online (Sandbox Code Playgroud)

您还会注意到Activity具有相同的可重写方法,活动将首先获取该方法,然后将其传递给附加的Fragment方法。

对于细心的人来说,您可以使用上下文即时执行此操作:

Configuration config = getResources().getConfiguration();
Run Code Online (Sandbox Code Playgroud)

希望有所帮助,它也意味着考虑到硬键盘,但我确信您会遇到一些特定于设备的错误!