2011-12-20 5 views
0

Я использую приведенный ниже код в своем приложении.Отображение диалогового окна прогресса при нажатии кнопки

Button button = new Button(this); 
    button.setOnClickListener(new View.OnClickListener() { 

       @Override 
       public void onClick(View v) { 

        ProgressDialog pd = new ProgressDialog(v.getContext()); 
        pd.setTitle("Please wait......."); 
        pd.show(); 
        // some task which will take minimum 2 or 3 seconds 
        // e.g. parsing XML file 
        pd.dismiss(); 
       } 
      }); 

Я думал, что в соответствии с выше коде, когда я нажимаю кнопку диалога прогресс будет отображаться на экране, но не отображаются. Почему я не знаю.

Но если я удалю pd.dismiss() его отображение, это также после отпускания кнопки.

Если я поставил любой бесконечный цикл вместо моей задачи также диалог его не отображает прогресс.

Правильно ли мой код? Если кто-нибудь знает решение моего требования, ответьте на этот пост.

Спасибо.

+0

Вы читали руководство разработчика Android для прогресса [диалог] (http://developer.android.com/guide/topics/ui/dialogs.html#ProgressDialog)? также, если вы посмотрите на право этой страницы, есть много вопросов с этой точной проблемой. – Vladimir

+0

Я видел все это, все говорят о потоках и диалоге прогресса. Все разместили код с помощью диалогового окна «Прогресс» внутри потока. Я разместил здесь, чтобы получить решение, если кто-то пробовал без AsyncTask. спасибо за комментарий. –

+0

Возможный дубликат [Как показать, а затем удалить диалоговое окно прогресса Android] (http://stackoverflow.com/questions/4388142/how-do-i-show-and-then-remove-an-android-progress- диалог) –

ответ

1

использовать класс AsychTask для просто написать свой код в метод inBackground() и показать прогресс, используя onUpdateProgress() и освобождает от onPostExecute()

здесь пример ссылки

http://developer.android.com/reference/android/os/AsyncTask.html

http://www.vogella.de/articles/AndroidPerformance/article.html

+0

Небольшое сомнение, возможно ли это без AsyncTask? –

+0

в вашем случае возможно, но что произошло, когда был показан диалог выполнения и он появился на экране до того, как он был уволен, поэтому ваша задача выполнялась очень хорошо, но для появления диалогового окна прогресса не получилось столько времени – Pratik

+0

я упомянул в моем вопросе ** даже Я помещаю бесконечный цикл также ** перед вызовом 'reject()' no progress dialog на экране. Хорошо, я попробую с AsyncTask. во всяком случае спасибо за комментарий и ответ. –

1

AsyncTasks предназначены для этой цели. запустите asyncTask при нажатии кнопки, а в preExecute asyncTask отобразите диалог, а в PostExecute() в asyncTask запустите диалог. Выполняйте операцию, которая требует времени в методе background().

+0

согласен yashwanth ... – Richa

Смежные вопросы