Я следил за различными вопросами и ответами здесь, чтобы настроить активность Android для переопределения onConfigurationChanged()
, чтобы выполнить логику, когда открывается и закрывается мягкая клавиатура. Вот соответствующие выдержки из моего кода. Я отбросил его до самого простого сценария:
AndroidManifest.xml
...
<activity
android:name=".SearchActivity"
android:label="@string/app_name"
android:configChanges="keyboard|keyboardHidden|orientation"
/>
...
SearchActivity.java
...
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
Toast.makeText(this, "onConfigurationChanged()", Toast.LENGTH_SHORT).show();
}
...
В приведенном выше коде будет отображаться "Toast", когда я меняю ориентацию, но ничего не делает, когда мягкая клавиатура открывается или закрывается. Я протестировал открытие мягкой клавиатуры с помощью фокусировки EditText и ручным открытием ее с помощью длительного нажатия кнопки меню. Не запускайте вызов onConfigurationChanged()
.
Таким образом, код на месте, похоже, работает, поскольку меняется ориентация, но я ничего не получаю для мягкой клавиатуры. Есть идеи? Если ответ "onConfigurationChanged() не поймает события софт-клавиатурой", что является подходящим решением для обнаружения и обработки этого события?
На всякий случай это актуально, я тестирую Droid X, работающий с пряниками.