onConfigurationChanged()没有为keyboardHidden触发

时间:2011-06-08 13:50:36

标签: java android xml

我已经按照这里的各种问题和答案来设置我的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()没有捕获软键盘事件”,那么检测和处理此事件的适当解决方案是什么?

以防它是相关的,我正在测试运行Gingerbread的Droid X.

1 个答案:

答案 0 :(得分:15)

不,onConfigurationChange()不会捕获软键盘事件:它不是配置更改。方向更改会导致使用一组新资源(例如layout-land vs layout-port),这是配置更改的定义。

那怎么办?好吧,显示键盘时没有触发任何事件,但您可以检测键盘何时调整布局。

有关代码,请参阅How to check visibility of software keyboard in Android?