Android:InputConnection-如何正确获取合成文本

Android:InputConnection-如何正确获取合成文本,android,Android,我在textfield中进行退格,我需要设置为composingText单词或it部分,它在光标位置之前已经离开。每次按backspace时,我都必须做那件事。因此,我的步骤必须是: 获取最后一个单词(或部分单词)的大小 将其作为撰写文本 我试着这样做: ic.setSelection(startWordPosition, word.length()); ic.setComposingText(word, 1); ic.deleteSurroundingText(word.length()

我在textfield中进行退格,我需要设置为composingText单词或it部分,它在光标位置之前已经离开。每次按backspace时,我都必须做那件事。因此,我的步骤必须是:

  • 获取最后一个单词(或部分单词)的大小
  • 将其作为撰写文本
我试着这样做:

ic.setSelection(startWordPosition, word.length());
ic.setComposingText(word, 1);
ic.deleteSurroundingText(word.length(),0);
ic.setComposingText(word, 1);
这一切都很好,而我不会像“a.a”那样在字符串中测试退格。它选择所有3个字符,但设置后,仅替换点后面的部分

然后我试着这样做:

ic.setSelection(startWordPosition, word.length());
ic.setComposingText(word, 1);
ic.deleteSurroundingText(word.length(),0);
ic.setComposingText(word, 1);
但它不能正常工作,有时会删除单词前面的文本(可能是因为它目前正在撰写)


只需再找到一种正确的方法:

ic.finishComposingText();
ic.deleteSurroundingText(word.length(),0);
ic.setComposingText(word, 1);            
ic.setSelection(fullInputedString.length(),fullInputedString.length());
正确吗?

应该如何正确处理呢?

目标sdk=8

谢谢


UPD: 我找到了下一个解决方案

ic.finishComposingText();
ic.deleteSurroundingText(wordForInsert.length(), 0);
ic.setComposingText(wordForInsert, 1);
对于最新的android版本,我使用适当的方法:

ic.setComposingRegion();

但该解决方案在4.0v android和最新版本的Standard android浏览器中存在问题。

请详细说明您发布的解决方案好吗?您向setComposingRegion发送了哪些参数,您是否仍然会遇到与问题中提到的相同的问题?