Android Показать программную клавиатуру, когда начинается первое занятие? - PullRequest
6 голосов
/ 08 марта 2011

Мне нужно отобразить виртуальную клавиатуру при запуске приложения, но до сих пор у меня не получилось.

Я использую этот код в методе «OnCreate» для отображения виртуальной клавиатуры

    InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.toggleSoftInput(txtBuscar.getId(), InputMethodManager.SHOW_FORCED);

этот код прекрасно работает на любом экране в любое время, но не работает, когда начинается «первое» действие. Почему?

Я пробовал, когда запускаю другое действие, и оно работает, но не работает, когда я запускаю "первое" действие.

Я пытался поместить этот код в события "OnCreate" и многие другие .... но, похоже, не работает.

Есть ли в любом случае «заставить» отображать клавиатуру при запуске приложения?

Заранее спасибо.

Ответы [ 3 ]

24 голосов
/ 31 марта 2011

Нашел решение:

txtPassword.postDelayed(new Runnable() {
            @Override
            public void run() {
                InputMethodManager keyboard = (InputMethodManager)
                getSystemService(Context.INPUT_METHOD_SERVICE);
                keyboard.showSoftInput(txtPassword, 0); 
            }
        },200);

Спасибо !!!

1 голос
/ 08 марта 2011

onCreate не будет вызываться, если действие сначала было перенесено из фона. Вы пытались поместить этот код в OnResume?

onCreate вызывается только в том случае, если действие начинается впервые или действие прекращается, и пользователь снова переходит к действию. Поэтому, если действие все еще живое, но в фоновом режиме, оно не будет вызывать onCreate.

С другой стороны, onResume будет вызываться каждый раз, когда активность выходит на передний план (видимый на экране) из фона.

Вот ссылка на жизненный цикл деятельности, если вы заинтересованы http://developer.android.com/reference/android/app/Activity.html.

Надеюсь, это поможет.

0 голосов
/ 02 октября 2018

Я столкнулся с той же проблемой, мне помог этот метод ниже

public static void showKeyboard(Context context) {
    InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
    if (imm != null) {
        imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);
    }
}
...