Ответ 1
Что лучше всего для меня работало в Android Manifest для активности B, добавив
android:windowSoftInputMode="stateVisible"
Надеюсь, что это поможет и вам.
У меня есть 2 действия, A и B. Когда A запускается, он проверяет условие и, если оно истинно, вызывает startActivityForResult()
, чтобы начать B. B принимает только текстовый ввод, поэтому имеет смысл, чтобы мягкая клавиатура автоматически всплывала когда начинается B. Когда действие начинается, EditText уже имеет фокус и готов к вводу.
Проблема заключается в том, что клавиатура никогда не появляется, даже если windowSoftInputMode="stateAlwaysVisible"
установлен в манифесте под тегом <activity>
для B. Я также попытался с значением, установленным на stateVisible
. Поскольку он не отображается автоматически, я должен нажать EditText, чтобы он показывался.
Кто-нибудь знает, что такое решение?
Что лучше всего для меня работало в Android Manifest для активности B, добавив
android:windowSoftInputMode="stateVisible"
Надеюсь, что это поможет и вам.
Самое простое решение: Положите
android:windowSoftInputMode = "stateVisible"
в разделе Действия AndroidManifest.xml
Если requestFocus на EditText не показывает его, возможно, это сделает это:
InputMethodManager imm = (InputMethodManager)getSystemService(
Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(mEditText, 0);
Посмотрите здесь для получения дополнительной информации.
Для меня работали только такие решения: добавить манифест для этой активности:
android:windowSoftInputMode="stateVisible|adjustPan"
Попробуйте показать клавиатуру с некоторой задержкой. Что-то похожее на это:
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);
}
Если вы используете эмулятор, вам нужно отключить жесткую клавиатуру, чтобы отобразить мягкую клавиатуру.
Файл: AndroidManifest.xml
<activity android:name=".MainActivity">
Добавьте следующее свойство:
android:windowSoftInputMode="stateVisible"
Который работал для меня.
вставить это после setContentView
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
У меня есть два пути.
Способ 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 (я думаю, этого следует избегать) Используя следующий код в manifest-
android:windowSoftInputMode="stateVisible"