最近项目在集成SDK的过程中,发现原来的弹出软键盘的功能,突然不能弹出来了,后来找了很久也没有找出来, 没有集成之前,是没有问题的,集成后,发下原来无问题的app内容出现了这个bug, 后来经过多人的排查,发现是SDK的问题,让SDK提供方,单独写个页面,发现也是弹不出软键盘,
下面就是单独从SDK方面找问题, 在原有的四个Fragment单独建了一个EditText 的Fragment, 发现弹不出来,然后分析,感觉就首页有跑马灯和倒计时,可能是这两个控件导致的问题, 然后把HomeFragment 去掉,换成一个没有TestFragment, 再次运行项目,发现软键盘可以弹出了, 这个时候,我就把问题定位到了这个HomeFragment 上面,在这里找问题, 这个页面有两个Fragment嵌套的,然后把里面的可能的控件全部注释掉了,运行项目还是不行, 这个时候问题,卡壳了, 后面想到基类是不是基类的问题,但是基类看了那少少的几行代码,找不到问题点, 后面,后来,把原来SDK的Fragment,换成其中的某一种,运行还是不行, 问题,定位到基类,但是基类就是找不到问题点,后面在同事的点拨下
发现在BaseFragment 的onViewCreated() 发现这行代码 getActivity().getWindow().addFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
后来查了百度, 发现这个就是隐藏软键盘的罪魁祸首, 这行代码注释掉了项目就可以正常的弹出软键盘了。
经过了这个事情,就发现自己的思维还是不够冷静, 问题太想当然, 没有把问题考虑周全,导致了浪费了大量的时间。
很多事情都是主观判断了,判断是首页出了问题,为啥没有想到把其他的Fragment替换成首页,再试一下,会不会能弹出软键盘,如果不能,问题就可以与真理更近一步了。