在异步任务调用期间不显示进度对话框
Progress Dialog not showing during a asynctask call
好的,所以我正在尝试获取一个进度对话框以显示何时从 Internet 下载数据并将其应用于 UI。我的 asynctask 工作正常,它 运行 完成了所有步骤,但它从未显示过对话框。我不知道我在这里做错了什么,我几乎碰壁了。我什至尝试将异步任务放入新的 运行nable 线程中,然后 运行 就这样,但也没有显示对话框。我这样调用异步任务
new runningMan().execute();
这是我正在尝试的代码 运行。
private class runningMan extends AsyncTask<Void, Void, Integer>
{
@Override
protected void onPreExecute() {
super.onPreExecute();
Log.d("Runningman: ", "Started running");
//this method will be running on UI thread
progress = ProgressDialog.show(PromotionMain.this, "Loading", "PleaseWait", true);
}
@Override
protected Integer doInBackground(Void... params) {
//parse the JSON string
JSONParser jp = new JSONParser();
try {
Log.d(username , password);
jp.parsesData(promos, myJson, pictureArray, pathArray, labelArray);
Log.d("Runningman: ", "Finished parsing");
} catch (IOException e) {
e.printStackTrace();
}
return 1;
}
@Override
protected void onPostExecute(Integer result) {
super.onPostExecute(result);
ArrayList<ListItem> listData = getListData();
fillListView(listData);
Log.d("Runningman: ", "Finished runing");
//this method will be running on UI thread
progress.dismiss();
}
}
感谢您对此的任何帮助。
在进度对话框的代码之后调用 "super.onPreExecute();" 和 "super.onPostExecute(result);"。或者更好的是,摆脱它们(如果你没有理由调用它们)。
使用以下代码:
private class runningMan extends AsyncTask<Void, Void, Integer>
{
@Override
protected void onPreExecute() {
Log.d("Runningman: ", "Started running");
//this method will be running on UI thread
progress = ProgressDialog.show(PromotionMain.this, "Loading", "PleaseWait", true);
super.onPreExecute();
}
@Override
protected Integer doInBackground(Void... params) {
//parse the JSON string
JSONParser jp = new JSONParser();
try {
Log.d(username , password);
jp.parsesData(promos, myJson, pictureArray, pathArray, labelArray);
Log.d("Runningman: ", "Finished parsing");
} catch (IOException e) {
e.printStackTrace();
}
return 1;
}
@Override
protected void onPostExecute(Integer result) {
ArrayList<ListItem> listData = getListData();
fillListView(listData);
Log.d("Runningman: ", "Finished runing");
//this method will be running on UI thread
progress.dismiss();
super.onPostExecute(result);
}
}
好的,所以我正在尝试获取一个进度对话框以显示何时从 Internet 下载数据并将其应用于 UI。我的 asynctask 工作正常,它 运行 完成了所有步骤,但它从未显示过对话框。我不知道我在这里做错了什么,我几乎碰壁了。我什至尝试将异步任务放入新的 运行nable 线程中,然后 运行 就这样,但也没有显示对话框。我这样调用异步任务
new runningMan().execute();
这是我正在尝试的代码 运行。
private class runningMan extends AsyncTask<Void, Void, Integer>
{
@Override
protected void onPreExecute() {
super.onPreExecute();
Log.d("Runningman: ", "Started running");
//this method will be running on UI thread
progress = ProgressDialog.show(PromotionMain.this, "Loading", "PleaseWait", true);
}
@Override
protected Integer doInBackground(Void... params) {
//parse the JSON string
JSONParser jp = new JSONParser();
try {
Log.d(username , password);
jp.parsesData(promos, myJson, pictureArray, pathArray, labelArray);
Log.d("Runningman: ", "Finished parsing");
} catch (IOException e) {
e.printStackTrace();
}
return 1;
}
@Override
protected void onPostExecute(Integer result) {
super.onPostExecute(result);
ArrayList<ListItem> listData = getListData();
fillListView(listData);
Log.d("Runningman: ", "Finished runing");
//this method will be running on UI thread
progress.dismiss();
}
}
感谢您对此的任何帮助。
在进度对话框的代码之后调用 "super.onPreExecute();" 和 "super.onPostExecute(result);"。或者更好的是,摆脱它们(如果你没有理由调用它们)。
使用以下代码:
private class runningMan extends AsyncTask<Void, Void, Integer>
{
@Override
protected void onPreExecute() {
Log.d("Runningman: ", "Started running");
//this method will be running on UI thread
progress = ProgressDialog.show(PromotionMain.this, "Loading", "PleaseWait", true);
super.onPreExecute();
}
@Override
protected Integer doInBackground(Void... params) {
//parse the JSON string
JSONParser jp = new JSONParser();
try {
Log.d(username , password);
jp.parsesData(promos, myJson, pictureArray, pathArray, labelArray);
Log.d("Runningman: ", "Finished parsing");
} catch (IOException e) {
e.printStackTrace();
}
return 1;
}
@Override
protected void onPostExecute(Integer result) {
ArrayList<ListItem> listData = getListData();
fillListView(listData);
Log.d("Runningman: ", "Finished runing");
//this method will be running on UI thread
progress.dismiss();
super.onPostExecute(result);
}
}