Android: ProgressDialog no se muestra
Estoy tratando de crear un ProgressDialog para una aplicación Android (sólo una simple que muestra al usuario que las cosas están sucediendo, sin botones o nada), pero no puedo hacerlo bien. He estado a través de foros y tutoriales, así como el ejemplo de código que viene con el SDK, pero sin éxito.
Esto es lo que conseguí:
- Android: Cómo crear un progreso modal "Rueda" Overlay?
- Android: Crash en rotación, horizontal a vertical
- Despedir Progress Dialog
- ¿Cómo mostrar el diálogo de progreso en Android?
- Android - ¿Cómo hacer un diálogo de progreso incrustado en la interfaz de usuario?
btnSubmit.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { (...) ProgressDialog pd = new ProgressDialog(MyApp.this); pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); pd.setMessage("Working..."); pd.setIndeterminate(true); pd.setCancelable(false); // now fetch the results (...long time calculations here...) // remove progress dialog pd.dismiss();
También he intentado agregar pd.show();
Y desordenado con el parámetro en el new ProgressDialog
resultando en nada en absoluto (excepto los errores que el parámetro elegido no funcionará), lo que significa: el ProgressDialog nunca aparecerá. La aplicación sigue funcionando como si nunca hubiera añadido el diálogo.
No sé si estoy creando el diálogo en el lugar correcto, lo moví un poco, pero que, también, didnt't ayuda. Tal vez estoy en el contexto equivocado? El código anterior está dentro de private ViewGroup _createInputForm()
en MyApp
.
Cualquier sugerencia es apreciada,
- No se puede descartar el diálogo de progreso
- El detector de progreso de subida no se disparó (API de unidad de Google)
- El cuadro de diálogo Progreso muestra pero no muestra la barra de progreso y el mensaje no se actualiza
- Java.lang.IllegalStateException: ActionBarImpl sólo se puede utilizar con un diseño de ventana de decoración compatible
- cierre de actividad y cuadro de diálogo en la parte posterior de la prensa
- ¿Cómo mostrar el estado de la barra de progreso por porcentaje mientras se suben los datos de json?
- Conmutación de pantalla negra entre actividad
- ProgressDialog no se muestra al realizar una tarea
Usted tiene que llamar pd.show antes de que comience el cálculo largo y entonces el cálculo tiene que funcionar en un hilo de rosca separado. Tan pronto como termine este hilo, debe llamar a pd.dismiss () para cerrar el cuadro de diálogo prgoress.
Aquí puedes ver un ejemplo:
El diálogo de progreso se crea y se muestra y se llama a un hilo para ejecutar un cálculo pesado:
@Override public void onClick(View v) { pd = ProgressDialog.show(lexs, "Search", "Searching...", true, false); Search search = new Search( ... ); SearchThread searchThread = new SearchThread(search); searchThread.start(); }
Y aquí el hilo:
private class SearchThread extends Thread { private Search search; public SearchThread(Search search) { this.search = search; } @Override public void run() { search.search(); handler.sendEmptyMessage(0); } private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { displaySearchResults(search); pd.dismiss(); } }; }
Te estoy dando una solución para ello, Prueba esto … Primero defina el cuadro de diálogo Progreso en el método Actividad antes onCreate ().
Private ProgressDialog progressDialog;
Ahora, en el método oncreate, puede hacer que el botón Any haga clic en el que u cambiará Activit en cualquier acción. Simplemente establezca la barra de progreso allí.
progressDialog = ProgressDialog.show(FoodDriveModule.this, "", "Loading...");
Ahora Usa hilo para Presionar la barra de progreso para mostrar y ocultar
new Thread() { public void run() { try { sleep(1500); // do the background process or any work that takes time to see progreaa dialog } catch (Exception e) { Log.e("tag",e.getMessage()); } // dismiss the progressdialog progressDialog.dismiss(); } }.start();
¡Eso es todo!
Progreso cuadro de diálogo no se muestra porque tiene que utilizar un subproceso separado. Las mejores prácticas en Android es utilizar AsyncTask (muy recomendable). Véase también esta respuesta .
Esto también es posible utilizando AsyncTask . Esta clase crea un hilo para ti. Debe subclase y rellenar el doInBackground(...)
.
- ¿Por qué onDraw no se llama después de invalidate ()?
- Eclipse, Android, Scala hecho fácil, pero aún no funciona