Android Fragment键盘无法弹出

来源:互联网 发布:动物精神 知乎 编辑:程序博客网 时间:2024/05/22 09:55

我在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;        }    });
原创粉丝点击