为啥 showSoftInput 不显示虚拟键盘?

Posted

技术标签:

【中文标题】为啥 showSoftInput 不显示虚拟键盘?【英文标题】:Why won't showSoftInput display the virtual keyboard?为什么 showSoftInput 不显示虚拟键盘? 【发布时间】:2012-11-12 23:17:55 【问题描述】:

基本上我试图在不使用可见的EditTextTextView 的情况下显示虚拟键盘并收集输入。我意识到toggleSoftInput 可以用来执行此操作,但是我需要使用showSoftInput,因为我想使用TextWatcher 来操作输入。此外,我使用的引擎是 c++,所以我尝试尽可能少地编写纯 java 代码,因此我避免使用 .xml 文件。所以这里...

public class GameActivity extends Activity 

    protected GameView view = null;
    protected EditText editText;

    protected void onCreate(Bundle bundle)
    
        super.onCreate(bundle);

        view = new GameView(this);
        setContentView(view);

        editText = new EditText(this);
        editText.setCursorVisible(false);
        editText.setFocusable(true);
        editText.setFocusableInTouchMode(true);
    

    public boolean showKeyboard()
    
        JniApp.log("showKeyboard() in Java invoked!!!");

        editText.requestFocus();
        editText.requestFocusFromTouch();

        InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.showSoftInput(editText, InputMethodManager.SHOW_FORCED);
    

showKeyboard() 是我对 java 的 c++ 调用。我已检查以确保 editText 正在接收焦点,并且确实如此。但是,showSoftInput 返回 false。任何帮助将不胜感激。

更新:经过一些调试后,requestFocus 似乎返回 true,但活动仍然显示 view 是当前焦点。

【问题讨论】:

【参考方案1】:

也许用 .SHOW_IMPLICIT 而不是 .SHOW_FORCED 试试?

您是否在其他可能有其他 android 版本的模拟器/设备上尝试过?

【讨论】:

以上是关于为啥 showSoftInput 不显示虚拟键盘?的主要内容,如果未能解决你的问题,请参考以下文章

为啥单击编辑文本后不显示qml虚拟键盘,而我在.pro和main.cpp中调用插件

为啥显示键盘时 UIScrollView 不滚动?

setImeOptions:为啥软键盘上不显示“完成”按钮?

为啥从导航堆栈中弹出视图时键盘不显示?

为啥显示键盘后我的滚动不起作用?

为啥虚拟键盘不适用于 Qt 中的 QDialog 文本框?