Difficulty in changing the message of progress dialog in async task
我创建了一个异步任务,并希望在 doBackground 的不同阶段更改进度对话框的消息。这是代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | public class sc extends AsyncTask<Integer,String,Void> { ProgressDialog dialog; protected void onPreExecute() { dialog=new ProgressDialog(Loc.this); dialog.show(); } @Override protected Void doInBackground(Integer... params) { onProgressUpdate("Contacting server..Please wait.."); //Do some work onProgressUpdate("Processing the result"); //Do some work onProgressUpdate("Calculating.."); dialog.dismiss(); return null; } protected void onProgressUpdate(String ui) { dialog.setMessage(ui); } } |
但问题是,进度对话框总是只显示第一条消息。请帮助我找到解决方案。
1 2 3 4 5 | protected Void doInBackground(Integer... params) { onProgessUpdate("Contacting server..Please wait.."); ... } |
Urrrm,不,那行不通。
试试……
1 | publishProgress("Contacting server..Please wait.."); |
您必须在
也不要在
我认为应该是..
1 | publishProgress("Your Dialog message.."); |
不是
1 | onProgessUpdate("Processing the result"); |
在doInBack..()中
类似,
1 2 3 4 5 6 7 8 9 | protected Long doInBackground(URL... urls) { publishProgress("Hello"); return null; } protected void onProgressUpdate(String msg) { dialog.setMessage(msg); } |
问题也可能是您没有设置"初始消息"。如果您在尝试在
1 2 3 4 5 6 7 | ProgressDialog progressDialog = new ProgressDialog(this); progressDialog.setTitle("Title"); progressDialog.setMessage("Initial message needed"); public class foo extends AsyncTask<Void,Integer,Void> { ... } |
还请注意,如果您需要进度更新和消息,则可以使用整数变量参数,其中一个整数定义进度量,另一个定义消息作为