- 问题:EditText获取焦点并弹出键盘方法,在Activity onCreate调用时无效:
/**
* 显示键盘
*
* @param et EditText
*/
public void showSoftInput(final EditText et) {
et.requestFocus();
InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
imm.showSoftInput(et, InputMethodManager.SHOW_IMPLICIT);
}
原因:View的绘制流程与Activity生命周期不同步,即Activity onCreate完成,EditText仍然没有绘制出来
解决方法:调用view的post方法,在run方法中弹出键盘
et.post(new Runnable() {
@Override
public void run() {
showSoftInput(et);
}
});
);
因为post会将runnable放到队列的末尾,当post的任务执行,说明view已经完全绘制出来。关于view.post的细节可以到此链接了解https://www.jianshu.com/p/b1d5e31e2011