theme style personalizado holo full activity android android-activity dialog

android - style - mostrar progresodialog en clase no activa



input dialog android (3)

Su cuadro de diálogo debe ser llamado desde UIthread así que trate de usar esto,

context.this.runOnUiThread(new Runnable() { @Override public void run() { mDialog.show(); } });

Espero que esto funcione.

Estoy tratando de mostrar un cuadro de diálogo en una clase que no es de Actividad. Básicamente, detecto un objeto en mi aplicación, me gustaría mostrar un diálogo y luego cambiar actividades. Obtengo una "java.lang.RuntimeException: no se puede crear el controlador dentro de la secuencia que no ha llamado a Looper.prepare ()" en mi logcat.

Aquí hay algunos de mis códigos:

public ImageTargetsRenderer(Context context) { this.context = context; mDialog = new ProgressDialog(context); } public void onDrawFrame(GL10 gl) { testFlag = 0; // DO NOT RENDER IF THERE IS NO TRACKABLE if (!mIsActive) return; // Call our native function to render content // RENDER IF THERE IS A TRACKABLE testFlag = renderFrame(); System.err.println("ImageTargetsRenderer reports: " + testFlag); if(testFlag > 0 && frameCount > 5) { frameCount = 0; System.err.println("Starting to switch activities."); mDialog.setTitle("Please wait"); mDialog.setMessage("Please wait"); mDialog.show(); new Thread() { public void run() { try{ sleep(5000); } catch (Exception e) { } // Dismiss the Dialog mDialog.dismiss(); } }.start(); Intent myIntent = new Intent(context, FlashActivity.class); myIntent.putExtra("com.qualcomm.QCARSamples.ImageTargets.flagTest", testFlag); myIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); context.startActivity(myIntent); testFlag = 0; return; } frameCount++; }


Tu hiciste esto

context.runOnUIThread( new Runnable() { public void run() { // show the Dialog mDialog.setTitle("Please wait"); mDialog.setMessage("Please wait"); mDialog.show(); } }); } Thread.sleep(5000); context.runOnUIThread( new Runnable() { public void run() { // Dismiss the Dialog mDialog.dismiss(); } });


Esta es la excepción que obtendrá si está realizando cualquier operación de IU en cualquier hilo o desde cualquier tarea de fondo. También context.runOnUiThread no funcionará.

En su lugar use:

activity.runOnUiThread(new Runnable() { @Override public void run() { mDialog.dismiss(); } });

Puede usar lo mismo para mostrar dónde la activity es el objeto de la activity .