2012-02-18 154 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,這已經是解僱了導致未捕獲的異常。