如何从服务中显示软键盘?

rip*_*pel 9 android android-layout android-softkeyboard

简短的问题:是否可以(以及如何)从服务中显示软键盘?

长问题:我写了一个服务,它创建了一个"顶栏",显示在所有活动的顶部,包含一个EditText.我想在单击EditText时显示软键盘,但这不会发生.

当然我已经从服务的onFocusChange()和onClick()尝试了这个:

InputMethodManager imm = (InputMethodManager)this.getSystemService(Service.INPUT_METHOD_SERVICE);
imm.showSoftInput(editText, InputMethodManager.SHOW_FORCED);
Run Code Online (Sandbox Code Playgroud)

我想到的解决方法是通过扩展Activity类并添加AIDL接口来请求当前活动显示键盘.缺点是必须将每个键事件发送回服务(通过另一个AIDL接口)并手动转换为Unicode.

此外,如果当前活动包含EditText,则软键盘仅适用于活动,并且在选择服务的EditText时不再显示.

如果当前活动有EditText,会阻止服务的软键盘显示什么?这可能是Android的限制吗?

Neh*_*ani -1

如果您想在 edittext 的触摸上显示软键盘,为什么不考虑将 onTouchListener 与该 edittext 一起使用。我相信 edittext.requestfocus() 也会这样做。如果没有,听众肯定会工作。

此外,对于您提到的那种视图,最好使用片段而不是服务来创建视图。