it-swarm.com.ru

Показывать программную клавиатуру при запуске Activity

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

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

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

47
Al.

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

Android:windowSoftInputMode="stateVisible"

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

89
Leo

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

Android:windowSoftInputMode = "stateVisible" 

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

18
Uncaught Exception

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

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

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

13
synic

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

Android:windowSoftInputMode="stateVisible|adjustPan"
11
Paul

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

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);
}
5
whlk

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

2
Chad Hedgcock

Файл: AndroidManifest.xml

<activity Android:name=".MainActivity">

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

Android:windowSoftInputMode="stateVisible"

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

1
Keyur Sureliya

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

Метод 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
abc

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

this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
0
Ashwini