带有EditText的ProgressBar

时间:2013-12-03 17:12:53

标签: java android

我正在搜索框。当用户在这里输入内容时,我会显示需要花费一些时间的建议。考虑到缓冲,我想为用户显示进度条。

为了实现此功能,我让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);
    }
}         

2 个答案:

答案 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本身使用进度条......