Показывать программную клавиатуру при запуске Activity - PullRequest
51 голосов
/ 18 марта 2010

У меня есть 2 действия, A и B. Когда A запускается, он проверяет условие, и если true, он вызывает startActivityForResult(), чтобы запустить B. B принимает только ввод текста, поэтому имеет смысл для автоматической клавиатуры когда начнется B Когда действие начинается, EditText уже имеет фокус и готов к вводу.

Проблема в том, что клавиатура никогда не появляется, даже если в манифесте установлено значение windowSoftInputMode="stateAlwaysVisible" под тегом <activity> для B. Я также пытался установить значение stateVisible. Так как он не отображается автоматически, я должен нажать на EditText, чтобы показать его.

Кто-нибудь знает, каким может быть решение?

Ответы [ 9 ]

94 голосов
/ 24 января 2011

Что лучше всего сработало для меня, так это в Android-манифесте для добавления активности B

android:windowSoftInputMode="stateVisible"

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

19 голосов
/ 23 сентября 2015

Самое простое решение: положить

android:windowSoftInputMode = "stateVisible" 

в разделе «Активность» AndroidManifest.xml

13 голосов
/ 18 марта 2010

Если requestFocus на EditText не показывает его, возможно, это сделает это:

InputMethodManager imm = (InputMethodManager)getSystemService(
    Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(mEditText, 0);

Смотрите здесь для получения дополнительной информации.

11 голосов
/ 21 июня 2012

У меня работали только такие решения: добавить в манифест для этого действия:

android:windowSoftInputMode="stateVisible|adjustPan"
5 голосов
/ 19 марта 2011

Попробуйте показать клавиатуру с некоторой задержкой. Нечто похожее на это:

public void onResume() {
    super.onResume();

    TimerTask tt = new TimerTask() {

        @Override
        public void run() {
            InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.showSoftInput(yourTextBox, InputMethodManager.SHOW_IMPLICIT);
        }
    };

    final Timer timer = new Timer();
    timer.schedule(tt, 200);
}
2 голосов
/ 03 февраля 2011

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

1 голос
/ 04 февраля 2018

У меня есть два пути.

Метод 1. Используйте следующий код внутри метода OnCreate

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

Это предотвратит появление клавиатуры, если вы не нажмете.

или

Метод 2 Вы можете переместить фокус на другое представление, например TextView, используя "requestfocus" в xml.

<TextView
            android:id="@+id/year_birth_day"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:text="1991">            
           <requestFocus />
           </TextView>

Метод 3 (я думаю, этого следует избегать) Использование следующего кода в манифесте -

android:windowSoftInputMode="stateVisible"
1 голос
/ 20 января 2018

Файл: AndroidManifest.xml

<activity android:name=".MainActivity">

Добавить следующее свойство:

android:windowSoftInputMode="stateVisible"

Который работал для меня.

0 голосов
/ 14 декабря 2018

вставить это после setContentView

this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...