2012-04-22 4 views
0

У меня возникают проблемы с вращением колеса ProgressDialog. Вот мой код:Android: ProgressDialog не вращается

final ProgressDialog dialog = ProgressDialog.show(this, "", "Loading...", true, false); 
Thread thread=new Thread(new Runnable(){ 
    public void run(){ 
    runOnUiThread(new Runnable(){ 
     @Override 
     public void run() { 
      if(dialog.isShowing()) 
       // starts a foreground service, does database stuff, 
       // sets up a spinner with values 
       dialog.dismiss(); 
      } 

     }); 
    } 
}); 

thread.start(); 

Все идет по плану, я получаю ProgressDialog, материал происходит в фоновом режиме и один раз установить, ProgressDialog уходит - единственная проблема в том, что анимация в ProgressDialog не вращается, в значительной степени что делает его бесполезным.

Что я делаю неправильно?

+0

Почему вы начинаете новую тему? –

+0

Я тестировал проект теперь с вашим кодом, и он вращается для меня. –

+0

Agarwal - Если я не запускаю новую нить, счетчик работает в потоке пользовательского интерфейса, а затем он никогда не отображается. – vampireLady

ответ

1

код вы здесь опущено

 // starts a foreground service, does database stuff, 
     // sets up a spinner with values 

должен сделать что-то блокировать поток пользовательского интерфейса. Просто поставьте их вне метода runOnUiThread().

Thread thread=new Thread(new Runnable(){ 
    public void run(){ 
     // starts a foreground service, does database stuff, 
     // sets up a spinner with values 
     runOnUiThread(new Runnable(){ 
      @Override 
      public void run() { 
      if(dialog.isShowing()) 
       dialog.dismiss(); 
      } 

     }); 
    } 
}); 
0

ProgressDialog пример использования обработчика андроида вопрос

final ProgressDialog dialog = ProgressDialog.show(this, "Title", 
      "Message", true); 

    final Handler handler = new Handler() { 
     public void handleMessage(Message msg) { 
      dialog.dismiss(); 
     } 
    }; 
    Thread t = new Thread() { 
     public void run() { 
      // write process code here. 

      handler.sendEmptyMessage(0); 
     } 
    }; 
    t.start(); 

Fix: ProgressDialog не работает

0

Поскольку вы положили диалог обработки в неправильной области, например, с моей ошибкой: У меня есть два вида деятельности: MainActivity и ShowingActivity, MainActivity отобразит диалоговое окно обработки после нового намерения передать Show ingActivity и ShowingActivity получат некоторые данные с сервера (он будет заблокирован здесь). Когда я вызываю ProcessingDialog в MainActivity, он показывает, но не вращается, потому что мой Intent переходит к ShowingActivity и блокирует Ui, потому что действие get DATA с сервера должно ждать несколько секунд. Так что я установил его: 1/в MainActivity вызова:

final Intent working = new Intent(getApplicationContext(), 
        WorkingActivity.class); 
final ProgressDialog ringProgressDialog = ProgressDialog.show(
        MainActivity.this, "Please wait ...", "Connecting ...", 
        true); 
ringProgressDialog.setCancelable(false); 
new Thread(new Runnable() { 
         @Override 
         public void run() { 
          //Menthod need time to load: 
            getDatafromServer(); 
          if (BookListFragment.isLoaded) { 
           ringProgressDialog.dismiss(); 
           startActivity(working); 
           return; 
          } 
}); 

Так что не будет блокировать Ui, поскольку MainActivity еще подножка после DATA был получил. И в ShowingActivity Я буду использовать эти ДАННЫЕ (потому что я устанавливаю DATA - статическая строка).

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