我在Fragment的onCreateView中,当EditText获取焦点时候调用如下代码弹出软键盘
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
但是发现在Fragment的加载完成开始显示的时候,键盘闪出来后就立即关闭了。
然后我就再绘制结束的监听中加了如下代码
view.getViewTreeObserver().addOnDrawListener(new ViewTreeObserver.OnDrawListener() {
@Override
public void onDraw() {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
}
});
发现还是不能正常弹出。
最后我只能参考网上的方法,在onCreateView中延迟500毫秒通过handler发消息,来弹出软键盘。
handler.sendEmptyMessageDelayed(0,500);
Handler handler = new Handler(new Handler.Callback() {
@Override
public boolean handleMessage(Message msg) {
imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
return false;
}
});