По сути, я пытаюсь показать виртуальную клавиатуру и собрать ввод без использования видимых 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. Я проверил, чтобы убедиться, что editText
получает фокус, и это так. Однако showSoftInput
возвращает false. Любая помощь будет принята с благодарностью.
ОБНОВЛЕНИЕ: после некоторой отладки кажется, что requestFocus
возвращает значение true, но действие по-прежнему говорит, что view
является текущим фокусом.