2011-11-03 10 views
5

El problema es que vengo de otra actividad, y cuando trato de ir a la nueva actividad, simplemente permanece en la anterior hasta que se muestra la nueva, así que estoy tratando de que vaya a la nueva actividad. de inmediato, y luego abrir una pantalla de carga mientras obtiene el contenido. (El contenido proviene de un sitio web o una base de datos interna).¿Cómo se puede generar una pantalla de carga en Android?

He intentado el progresoDialog desde el sitio de desarrollo de Android, pero no hace nada ya que la Actividad termina de cargarse antes de mostrar nada, por lo que con el tiempo se muestra, no hay nada que cargar.

Respuesta

14

Primero inicie primero la actividad nueva y luego llame al archivo de la tarea asíncrona ... esto iniciará una nueva actividad cuando cierre la anterior. en OnCreate de la nueva actividad llamar a la clase de tareas, como a continuación asyn

public class MainActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
      setContentView(your layout here); 
      new GetTask(this).execute(); 

    } 
} 

class GetTask extends AsyncTask<Object, Void, String> { 
    Context context; 

    GetTask(Context context, String userid) { 
     this.context = context; 
    } 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 

     mDialog = new ProgressDialog(mContext); 
     mDialog.setMessage("Please wait..."); 
     mDialog.show(); 
    } 

    @Override 
    protected String doInBackground(Object... params) { 
     // here you can get the details from db or web and fetch it.. 
    } 

    @Override 
    protected void onPostExecute(String result) { 
     super.onPostExecute(result); 

     mDialog.dismiss(); 
    } 
} 
+0

¿Por qué no lo hace simplemente como un subproceso? –

+0

Este AsyncTask funcionó de maravillas, acabo de aplicar algo de contenido genérico en el primer elemento de la lista mientras se cargaba y luego lo recuperaba del contenido real generado en el trabajo postExecute – Shant82

+0

@deepa nyc ... toma mi voto ... :) – Steve

0

Como sugerencia, intente reducir el código en el método onCreate de la segunda actividad. Que sea tan simple como llamar a super y configurar las vistas de contenido. Esto mostrará la interfaz de usuario diseñada en XML.

Mueva el resto del código a su método onResume. El próximo paso, si tiene algunos datos para ser obtenidos de DB o fuera, intente utilizar thread (how to do it & what is it) o async task.

+0

Bueno, yo uso un par de startActivityForResults, habrá que hacer que se vuelva a cargar en cada momento en que regrese? – Shant82

+0

no, si usa startActivtyForResult, necesita implementar onActivtyResult (..) y el contexto vuelve de aquí ... No volverá a cargar la actividad – Vinay

Cuestiones relacionadas