2010-02-09 11 views
11

ten przycisk jest wyświetlany podczas mojej aktywności początkowej. Po jego naciśnięciu zostanie uruchomiona nowa aktywność, ale to zajmie trochę czasu, ponieważ po zainicjowaniu tej nowej aktywności niektóre dane są zbierane z Internetu. To działa połowę. Wyświetlane jest okno dialogowe postępu, ale kółko postępu nie obraca się.Okno dialogowe postępu podczas rozpoczynania nowej działalności

Czy ktoś może mi powiedzieć, dlaczego tak się dzieje?

Button b4 = (Button) findViewById(R.id.Button01); 
     b4.setOnClickListener(new View.OnClickListener() { 
      public void onClick (View view) {  
      final ProgressDialog pd = ProgressDialog.show(pak.this, 
         "", "Working..", true); 

      new Thread(new Runnable(){ 
      public void run(){ 
       Intent intent = new Intent(); 
       intent.setClassName("sxe.pak", "sxe.pak.List"); 
       startActivity(intent);    
       pd.dismiss(); 
       } 
      }).start(); 

      } 
    }); 

thx

Odpowiedz

8

Trzeba pokazać postęp dialogowe na samym początku swojej działalności, a nie 2. Twój pierwszy. I musisz wykonać pobieranie danych w AsyncTask.

Zobacz moją odpowiedź na to, aby uzyskać więcej informacji:

Android SplashScreen

+0

dobra odpowiedź, ale wolałbym wątek AsyncTask dopóki nić nie trzeba korzystać z wątku UI. – pgsandstrom

+0

Cześć mbaird, thx za odpowiedź. Jestem świadomy możliwości użycia AsyncTask do pracy asynchronicznej, ale w moim przypadku nie można jej użyć (lub nie wiem jak), ponieważ chcę rozpocząć nową aktywność. Uruchamianie okna dialogowego postępu na samym początku 2. Aktywności nie jest opcją, próbowałem już tego bez powodzenia, ponieważ pierwsza czynność jest wyświetlana aż do rozpoczęcia drugiego. Po naciśnięciu przycisku przycisk zmienia kolor, a następnie okno dialogowe procesu jest wyświetlane tak, jakbym oczekiwał, że TYLKO kółko się nie obraca. To jedyny problem. – Andy

+1

@Andy, okno dialogowe postępu nie kręci się, ponieważ pracujesz w wątku interfejsu użytkownika. Przenieś swoją pracę do pobrania do osobnego wątku za pomocą AsyncTask lub po prostu wątku lub Runnable. Ponownie, jeśli spojrzysz na odpowiedź podaną powyżej i spróbuję skopiować to, co się dzieje w metodzie onCreate() mojej odpowiedzi na to pytanie w metodzie onCreate() twojej drugiej aktywności, obiecuję, że to zadziała. –

Powiązane problemy