我有两个片段的简单应用程序。 正确的片段被替换。 一个EditText内部有requestFocus的,但不显示键盘。
在Android 4.2.2它工作正常,在2.3.x版本没有,无论是在模拟器上也没有真正的设备。 在模拟器上,我可以用我的Windows键盘键入虽然软键盘没有显示。
我没有有意隐藏了键盘。 显示键盘与下面的代码仅适用于4.2.x.
InputMethodManager imgr = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imgr.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);
任何提示?
这样做更多的研究,我发现以下。
因为我需要专注于EditText上,我第一次清除病灶,然后把它放回去:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
myFilter.clearFocus();
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
myFilter.requestFocus();
}
键盘没有显示,但一旦用户点击的EditText,它出现。
这仍然没有在2.3模拟器上工作,但它的工作原理在实际设备上。 似乎是某种2.3的bug。
这似乎是某种常绿的问题。 我的应用程序只是有它在Android设备馅饼,而这个问题没有出现在Android L移动设备上。 贡纳尔·伯恩斯坦的解决方案做了工作,但我希望的EditText是没有焦点开始。 基于SO一些其他的答案,我想出了以下解决方案:
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
CoroutineScope(Dispatchers.Main).launch {
delay(100)
my_edit_view.clearFocus()
}
}
希望这可以帮助别人也是如此。