Почему showSoftInput не отображает виртуальную клавиатуру?

По сути, я пытаюсь показать виртуальную клавиатуру и собрать ввод без использования видимых 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 является текущим фокусом.


person user1819459    schedule 12.11.2012    source источник


Ответы (1)


Может, попробовать с .SHOW_IMPLICIT вместо .SHOW_FORCED?

Вы пробовали это на других эмуляторах / устройствах, возможно, с другими версиями Android?

person Alexandr    schedule 03.08.2013