2010-02-09 17 views
11

este botón se muestra en mi actividad de inicio. Después de presionarlo, se lanzará una nueva actividad, pero esto lleva tiempo, ya que en la inicialización de esa nueva actividad se recopilan algunos datos de Internet. Esto funciona la mitad. Se muestra el dialogo de progreso pero la rueda de progreso no está girando.Diálogo de progreso al iniciar nueva actividad

¿Alguien puede decirme por qué sucede esto?

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

Respuesta

8

Es necesario para mostrar el cuadro de diálogo en el comienzo de la segunda actividad progreso, no el primero. Y necesita hacer su trabajo de descarga de datos en una AsyncTask.

Véase mi respuesta a esto para obtener más información:

Android SplashScreen

+0

Buena respuesta, pero yo preferiría Tema a AsyncTask, siempre y cuando el hilo no necesita utilizar el hilo de interfaz de usuario. – pgsandstrom

+0

Hola mbaird, gracias por tu respuesta. Soy consciente de la posibilidad de usar AsyncTask para el trabajo asincrónico, pero en mi caso no es utilizable (o no sé cómo) porque quiero iniciar una nueva actividad. Iniciar el diálogo de progreso al comienzo de la 2ª Actividad no es una opción, ya lo intenté sin suerte, porque la primera Actividad se muestra hasta que se inicia el segundo. Si presiono el botón, el botón cambia su color y luego se muestra el cuadro de diálogo de proceso como si lo esperara SOLO la rueda no está girando. Ese es el único problema. – Andy

+1

@Andy, el diálogo de progreso no está girando porque está trabajando en el hilo de la interfaz de usuario. Mueva su trabajo de descarga a un hilo separado a través de AsyncTask o simplemente un hilo o ejecutable. Nuevamente, si miras la respuesta que di más arriba y tratas de copiar lo que está sucediendo en el método onCreate() de mi respuesta a esa pregunta en el método onCreate() de tu segunda actividad, prometo que funcionará. –

Cuestiones relacionadas