我有一個AsyncTask需要URL並獲取所有通過的url的內容長度。我希望在標題欄中更新進度欄,並在獲取最終值時顯示警告框。但我無法理解如何使這一切功能在一起。我現在的代碼移動了進度條,但不會顯示警告框。我沒有自定義標題欄,而是調用requestWindowFeature(FEATURE_PROGRESS)。任何幫助,將不勝感激。無法使publishProgress正常工作。幫幫我?
這是我的異步類
private class MyClass extends AsyncTask<URL, Integer, Float>
{
protected Float doInBackground(URL... urls)
{
try
{
for(int i = 0; i<urls.length; i++)
{
url = urls[i];
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setDoOutput(true);
urlConnection.connect();
size = urlConnection.getContentLength();
total += size;
while(progress<total)
{
progress++;
publishProgress(progress);
}
}
}
catch(MalformedURLException e)
{
e.printStackTrace();
}
catch(IOException iox)
{
iox.printStackTrace();
}
finally
{
urlConnection.disconnect();
}
return total;
}
protected void onProgressUpdate(Integer... values)
{
setProgressBarVisibility(true);
setProgress(values[0]);
}
編輯:據我所知,從publishProgress doInBackground方法將數據傳送給onProgressUpdate。但是通過上面的代碼,所有的url內容長度都被添加到「total」中。我認爲上面的代碼是正確的。我的這個實現是:從主類中按下一個按鈕。該按鈕將所有的url傳遞給AsyncTask。當網址獲得長度並添加到總數(在後臺)時,標題欄中會出現一個進度條,直到完成後臺工作。然後警報對話框提示用戶選擇。
雖然進度條到達最後並且警告對話框不顯示,但是發生了什麼。在我開始添加此進度條之前,顯示了警報對話框。現在它不。我怎樣才能讓進度條正確增加url內容長度....關閉進度條.....然後在onPostExecute中加載提醒對話框?
protected void onPostExecute(final Float result)
{
setProgressBarVisibility(false);
AlertDialog.Builder alertbox = new AlertDialog.Builder(Vacation.this);
alertbox.setMessage(TEXT STUFF);
alertbox.setPositiveButton("Yes", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface arg0, int arg1)
{
}
});
alertbox.setNegativeButton("No", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface arg0, int arg1)
{
}
});
alertbox.show();
}
我沒有看到代碼中,你試圖顯示警報對話框? – sat
alertdialog發生在onPostExecute中。 – Java00011111