进度条不会更新

时间:2012-02-18 13:42:00

标签: android progress-bar

我创建了一个进度条但我看不到加载动画。它冻结了。我想在单击项目时显示进度条,然后看到工作栏没有冻结。这是我的代码:

     lv.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view,
            int position, long id) {
           if (((TextView) view).getText().equals("Zman-New (rus)")){

               progDailog = ProgressDialog.show(testLoading.this, "Getting data", "Loading...",true,true);
               new GetDataTask("stringurl.xml").execute();

              }

这是getdata

 private class GetDataTask extends AsyncTask<Void, Void, Integer> {
String url;
GetDataTask(String url){
    this.url=url;
}
@Override
protected Integer doInBackground(Void... params) {
        //do all your backgroundtasks 
      intent = new Intent(rusNewsP.testLoading.this, rusNewsTest.rusNewsActivite.class);
      intent.putExtra("url",url);
      startActivity(intent);
      finish();
        return 1;
}

@Override
protected void onPostExecute(Integer result) {

        //finish up ( or close the progressbar )

        //do something with the result
    progDailog.dismiss();
        super.onPostExecute(result);
}
 }

2 个答案:

答案 0 :(得分:0)

如果您只想测试进度,请尝试以下操作:

private class Initialize extends AsyncTask<Short, Short, Short> {
            ProgressDialog pd;



@Override
protected void onPreExecute() {
    pd = new ProgressDialog(yourlass.this);
    pd.setMessage("test");
    pd.show();
    super.onPreExecute();
}

@Override
protected Short doInBackground(Short... params) {
    try {
    synchronized (this) {
        wait(2000);
    }
    } catch (InterruptedException ex) {
    }
    return null;
}

@Override
protected void onPostExecute(Short result) {
    pd.dismiss();
    super.onPostExecute(result);
}
}

不要在startActivity - 方法中调用doInBackground。而是在OnPostExecute中调用它。 GUI操作不应该在doInBackground中完成。

答案 1 :(得分:0)

尝试从 UI主题 开始 Activity 直接,因为这样会很快。
不过,如果您想要这种方式,请尝试从 onPostExecute方法启动它。
不是来自 doInBackground

protected void onPostExecute(Integer result) 
{
    //do something with the result
  progDailog.dismiss();
  intent=new Intent(rusNewsP.testLoading.this,rusNewsTest.rusNewsActivite.class);
  intent.putExtra("url",url);
  startActivity(intent);
  finish();
}  

并且在完成{{解雇 progressDialog 之后,不要打电话 super.onPostExecute(result); 1}},它将直接返回 onPostExecute 方法,它将首先关闭doInBackground(Short... params),然后执行构造函数,它将再次尝试关闭{ {1}}已被解雇导致未捕获的异常。