在Fragment中,软键盘未显示用于EditText的输入

3

我有一个包含两个碎片的简单应用程序。右侧的碎片正在被替换。其中的edittext已经请求了焦点,但是没有显示键盘。

在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);

有什么提示吗?

2个回答

3

我做了更多的研究,发现以下内容:

由于我需要将焦点放在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。

2

这似乎是一种长期存在的问题。我的应用在Android Pie设备上出现了这个问题,而在Android L设备上没有出现。Gunnar Bernstein的解决方案确实有效,但我希望EditText最初没有焦点。根据SO上的其他答案,我想出了以下解决方案:

Original Answer翻译成"最初的回答"

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)

        CoroutineScope(Dispatchers.Main).launch {
            delay(100)
            my_edit_view.clearFocus()
        }
    }

希望这也能帮助其他人。最初的回答是:

希望这对其他人有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接