[英]Android EditText setText cause softkeyboard to freeze
我对EditText
有问题。
我已经实现了TextWatcher
并且每次都在afterTextChanged
进行检查,以突出显示AsyncTask
中的某些特定关键字,并在onPostExcute
设置文本(我仅在此处触摸UI),但是当在onPostExcute
中调用setText
时,软键盘冻结(该应用没有不会冻结)。
public class AsyncHighLight extends AsyncTask<String,String,String>
{
@Override
protected String doInBackground(String[] p1){
return SyntaxHighlighter.getInstance(MainActivity.this).highlight(p1[0]);
}
@Override
protected void onPostExecute(String result){
et.setText(Html.fromHtml(result));
}
}
高亮代码在这里
public String highlight(String s){
String newString = s;
newString = newString.replace("\n","<br>");
for (int i = 0 ; i < currentLang.keyword.length ; i ++){
newString = newString.replace(currentLang.keyword[i],warpColorTag(currentLang.keyword[i]));
}
return newString;
}
您必须编写终止TextWatcher的afterTextChange()方法的逻辑,因为每当文本更改后,将调用afterTextChange(),并且每次调用afterTextChange()时,您都将突出显示AsyncTask中的某些特定关键字,然后再次在onPostExecute()中被调用,它将再次setText()。 因此,您必须找到终止afterTextChange()逻辑的方法。 为了获得更好的帮助,也请发布TextWatcher代码。
这是由于以下原因:一旦您在onpostexecute中设置了文本,textchange事件就会再次触发,并再次进入异步任务,从而进入无限循环。 您应该使用布尔值来跟踪事件是从onpostexecute生成还是通过键盘输入生成
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.