本质上,我试图显示虚拟键盘并收集输入,而不使用可见的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,但 Activity 仍显示view是当前焦点。

最佳答案

也许用.SHOW_IMPLICIT而不是.SHOW_FORCED尝试一下?

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

09-28 04:12