当我改变 fragments 时,因为在屏幕上有一个 EditText 区域,我就使用下面的代码关闭键盘。如果键盘在屏幕上,我发现不了任何检测。
Activity activity = getActivity();
InputMethodManager inputMethodManager = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE);
try
{
inputMethodManager.hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), 0);
}
catch (Exception e)
{
}
我认为使用 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;
}
}
}
在 manifest 中
<activity ...
android:configChanges="keyboardHidden|orientation|screenSize|screenLayout"/>
并且使用
Configuration config = getResources().getConfiguration();