本质上,我试图显示虚拟键盘并收集输入,而不使用可见的EditText
或TextView
。我意识到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版本的模拟器/设备上尝试过?