如何在Android键盘(IME)中处理配置更改?

时间:2017-02-02 19:54:34

标签: java android keyboard preferences ime

我一直关注文档提供的Android sample来设计新的(相对简单的)键盘。在这一点上,我坚持配置更改(如主题,textSize或位复杂的东西),这需要IME重新创建自己。

public class ImePreferences extends PreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        setTheme(R.style.AppTheme_WithActionBar);
        super.onCreate(savedInstanceState);
        PreferenceManager.getDefaultSharedPreferences(this).registerOnSharedPreferenceChangeListener(this);
    }

    @Override
    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
        // reload ime
        Log.d("anbani", "Stopping service " + String.valueOf(stopService(new Intent(this, SoftKeyboard.class))));
        Log.d("anbani", "prefs changed");
    }



    ...
}

这没有用。 StopService值返回true但没有效果。

是否有一些技巧可以在没有事先引用的情况下获取包键盘的实例?或者我错过了一些简单的东西?

任何提示都将受到高度赞赏!

1 个答案:

答案 0 :(得分:0)

解决方案:

@Override public View onCreateInputView() {
    // load preferences

    return mInputView;
}


@Override public void onStartInputView(EditorInfo attribute, boolean restarting) {
    super.onStartInputView(attribute, restarting);

    setInputView(onCreateInputView());

    ...
}