Android IME中丢失的样式文本

Android IME中丢失的样式文本,android,styling,ime,Android,Styling,Ime,我正在为Android开发一个IME,其中包括一些用户输入的文本的高亮显示,并带有背景色(使用SpannableString) 旋转设备并重新绘制键盘时,文本仍保留在用户输入的输入框中,但是,所有样式(即背景色)都会丢失 你知道为什么会发生这种情况,以及如何避免这种情况吗?我找到了一个解决方案,虽然并不完美,但它是有效的 在IME服务类中设置ExtractedText变量。 在OnConfiguration Changed方法中,获取提取的文本。然后在onStartInputView方法中,删除

我正在为Android开发一个IME,其中包括一些用户输入的文本的高亮显示,并带有背景色(使用SpannableString)

旋转设备并重新绘制键盘时,文本仍保留在用户输入的输入框中,但是,所有样式(即背景色)都会丢失


你知道为什么会发生这种情况,以及如何避免这种情况吗?

我找到了一个解决方案,虽然并不完美,但它是有效的

在IME服务类中设置ExtractedText变量。 在OnConfiguration Changed方法中,获取提取的文本。然后在onStartInputView方法中,删除绑定编辑器中的文本,并将其替换为提取的文本

@Override
public void onConfigurationChanged (Configuration newConfig)
{
    //get what's been input so far
    ExtractedTextRequest req = new ExtractedTextRequest();
    req.token = 0;
    req.flags = InputConnection.GET_TEXT_WITH_STYLES;
    extractedText = ic.getExtractedText(req, 0);

    super.onConfigurationChanged(newConfig);

}

@Override public void onStartInputView(EditorInfo attribute, boolean restarting) {
   ...
    if(extractedText!=null)
    {
        if(ic.deleteSurroundingText(9999, 0))
        {
            ic.commitText(extractedText.text, 1);
            Log.i("onStartInputView", "Text Replaced");
        }
        else
        {
            Log.i("onStartInputView", "IC not valid");
        }
    }

    super.onStartInputView(attribute, restarting);
}