我正在搜索框。当用户在这里输入内容时,我会显示需要花费一些时间的建议。考虑到缓冲,我想为用户显示进度条。
为了实现此功能,我让AsyncTask显示进度条和搜索框的TextWatcher以执行异步任务。
问题在于,简单地说,进度条没有显示出来。据我猜,这可能是因为TextWatcher没有更新UI。 有什么解决方案可以帮助我吗?
以下是我制作的代码。 任何建议都可以。谢谢。
mSearchEditText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
mProcessTask = new ProgressTask();
mProcessTask.execute();
"do something taking time here"
}
以下是AsyncTask的代码
private class ProgressTask extends AsyncTask <Void,Void,Void>{
@Override
protected void onPreExecute(){
super.onPreExecute();
mProgressBar.setVisibility(View.VISIBLE);
}
@Override
protected Void doInBackground(Void... arg0) {
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPreExecute();
mProgressBar.setVisibility(View.GONE);
}
}
答案 0 :(得分:0)
我找到了可能的解决方案。 当我将全屏模式更改为无标题栏模式时,问题中附带的代码开始正常工作。
答案 1 :(得分:0)
mSearchEditText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
mProgressBar.setVisibility(View.VISIBLE);
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
mProgressBar.setVisibility(View.GONE);
}
为什么不在textwatcher本身使用进度条......