测试前提:activity a ->b -> c.在c界面用EditText弹出键盘,然后返回界面b.
b界面的设置android:windowSoftInputMode 键盘是否自动收回
stateUnspecified √
stateUnchanged ×
stateHidden ×
stateAlwaysHidden ×
stateVisible ×
stateAlwaysVisible √
stateHidden ×
stateHidden ×
不指定 √
由此可见,键盘不收回跟b界面的配置有关,跟b界面有没有EditText无关,假如从b返回到a界面的话,a界面也遵循这个原则.
这里是看的别人大神发现的,copy过来,我在弗雷activity里设置了
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
```这样不用全局设置edittext失去焦点了,然而这个hidden会导致activity finsh的时候不收起软键盘然后我就重写了父类baseactivity的finsh方法
@Override
public void finish() {
super.finish();
hideKeyBoard();
}
/**
* 关闭软键盘
*/
public void hideKeyBoard() {
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
if(imm.isActive()&&getCurrentFocus()!=null){
if (getCurrentFocus().getWindowToken()!=null) {
imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
}
}