2012-02-18 152 views
0

我创建了一个进度条,但我看不到加载动画。它冻结了。当我点击该项目时,我想显示一个进度条,然后看到该工作栏正在工作,而不是冻结。这里是我的代码:进度条不更新

 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); 
} 
} 

回答

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); 
} 
} 

别叫在doInBackgroundstartActivity - 方法。相反,在OnPostExecute中调用它。 GUI操作不应该在doInBackground中完成。

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(); 
} 

而且...... 不叫super.onPostExecute(result);驳回progressDialog ..after完成doInBackground(Short... params),它会直接返回onPostExecute方法,其中将驳回ProgressDialog后首次然后执行构造函数,它将再次尝试解除ProgressDialog,这已经是解雇了导致未捕获的异常。