Запуск длительной задачи из AlertDialog (Android) - PullRequest
0 голосов
/ 15 декабря 2011

У меня есть AlertDialog, и у него есть кнопка, которая, если она выбрана, будет инициировать загрузку файла на удаленный сервер следующим образом:

builder.setMessage(text)                
.setCancelable(false)
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
uploadFile();
}})

Это работает нормально, единственная проблема заключается в том, что uploadFile() может занять много времени (от 30 секунд до 2 минут).Я хотел бы заменить AlertDialog диалоговым окном прогресса (даже неопределенным), но я не вижу, как запустить одно диалоговое окно из другого?

Может кто-нибудь дать совет, как мне это сделать.

Спасибо, Джарабек

Ответы [ 2 ]

5 голосов
/ 15 декабря 2011

Вы можете использовать AsyncTask здесь, оставить ProgressDialog на PreExecute(), вызвать метод в doingInBackground() и закрыть ProgressDialog в PostExecute().

private class MyAsyncTask extends AsyncTask<Void, Void, Void>
    {

        ProgressDialog mProgressDialog;
        @Override
        protected void onPostExecute(Void result) {
            mProgressDialog.dismiss();
        }

        @Override
        protected void onPreExecute() {
            mProgressDialog = ProgressDialog.show(ActivityName.this, "Loading...", "Data is Loading...");
        }

        @Override
        protected Void doInBackground(Void... params) {
            uploadFile();
            return null;
        }
    }

Тогда просто позвоните на MyAsyncTask, используя new MyAsyncTask().execute();

1 голос
/ 15 декабря 2011

Лучший способ сделать это - использовать AsyncTask. Там вы можете обеспечить прогресс и выполнить долгое действие

...