Android软键盘在方向更改时恢复默认键盘

时间:2015-07-13 23:24:16

标签: android keyboard android-input-method soft-keyboard

我正在构建一个Android软键盘,我似乎无法解决这个问题 - 我有一个阿拉伯语和QWERTY键盘,当我在QWERTY键盘上旋转设备(甚至阿拉伯语移位)时,好像我的程序已重新启动"它变成了阿拉伯键盘而没有移位。

onSaveInstanceState(Bundle savedInstanceState)不起作用,因为我的应用不会延伸Activity而是InputMethodService

我将以下内容放入我的Android清单

android:configChanges="keyboard|keyboardHidden|orientation"
android:windowSoftInputMode="stateUnchanged|adjustResize">

我尝试使用

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);

        Log.i(MYDEBUG, "Config Changed " + currentKeyboard.equals(qwerty));

    }

然而,currentKeyboard.equals(qwerty))总是导致错误,我确保在方向更改之前确实如此。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

我认为应用程序出错了。如果应用程序在方向更改时重新启动,则您的输入连接将被拆除并重建为新的编辑文本。这意味着键盘会将其视为新连接,并将以默认状态启动。要测试这一点,请编写一个测试应用程序,关闭配置更改时的重新启动,并查看该应用程序中的键盘是否仍然会发生。

答案 1 :(得分:-1)

好吧,经过一番令人难以置信的思考后,我意识到问题出在代码行cmd + R

删除后,我的代码会更改方向,但我的键盘不会调整大小。由于我喜欢父级的重新调整大小功能,我创建了一个包含所有键盘的数组,在更改方向后,我会更新数组,以便键盘阵列具有正确的大小。

super.onConfigurationChanged(newConfig);

不确定这是否是解决问题的迂回方式,或者这是否正确,如果有人知道更好的方式 - 请告诉我。