Если вы используете Java 6, вы можете использовать следующий oneliner для чтения целого из консоли:
int n = Integer.parseInt (System.console (). readLine ()) ;
protected Void doInBackground(Integer... params)
{
onProgessUpdate("Contacting server..Please wait..");
...
}
Urrrm, нет, это не сработает.
Попробуйте ...
publishProgress("Contacting server..Please wait..");
Вы должны «опубликовать» свой прогресс в doInBackground(..)
в порядок для onProgressUpdate(...)
, который будет вызываться.
Также не вызывайте dialog.dismiss()
в doInBackground(...)
вместо этого в onPostExecute(...)
.
Проблема также может заключаться в том, что вы не установили «начальное сообщение». Если вы не установили сообщение для своего ProgressDialog
, прежде чем пытаться сделать это внутри onProgressUpdate
, это не сработает.
ProgressDialog progressDialog = new ProgressDialog(this);
progressDialog.setTitle("Title");
progressDialog.setMessage("Initial message needed");
public class foo extends AsyncTask<Void,Integer,Void> {
...
}
Также обратите внимание, что если вам нужно как обновление хода выполнения, так и вы можете использовать аргумент переменной Integer с одним из целых чисел, определяющим объем выполнения, а другой определяющий сообщение как индекс массива сообщений String[]
(если сообщения известны заранее).
Я думаю, что это должно быть ..
publishProgress("Your Dialog message..");
not
onProgessUpdate("Processing the result");
в doInBack .. ()
Что-то вроде,
protected Long doInBackground(URL... urls) {
publishProgress("Hello");
return null;
}
protected void onProgressUpdate(String msg) {
dialog.setMessage(msg);
}
<String,String,Void>
- это второй тип параметра, который определяет, что передается вonProgressUpdate()
. – Squonk 1 July 2013 в 17:51