Android更改碎片时隐藏键盘

当我改变片段。 我使用这个来closures键盘,因为屏幕上有一个EditText字段。 我只是觉得有一个更好的方法,但我还没有发现任何东西,如果键盘在屏幕上。

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

Solutions Collecting From Web of "Android更改碎片时隐藏键盘"

在你实现调用各种片段的活动中,放置以下内容…

  InputMethodManager imm = (InputMethodManager)this.getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(getWindow().getDecorView().getWindowToken(), 0); 

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

KeyboardHidden和Configuration的组合应该这样做。

 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; } } } 

这当然依赖于你有清单和父项活动接受这些configuration更改:

 <activity ... android:configChanges="keyboardHidden|orientation|screenSize|screenLayout"/> 

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

对于观察者,你可以使用上下文在飞行中做到这一点:

 Configuration config = getResources().getConfiguration(); 

希望有所帮助,它也意味着考虑hardKeyboards,但我确定你会遇到一些设备特定的错误!