2011-06-13 17 views
5

estoy usando el siguiente código para crear mi propio diálogo:de diálogo Android desaparece por sí sola

public void ShowMessageDialog(String str){ 
    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setMessage(str); 
    builder.setCancelable(false); 
    builder.setNeutralButton("Ok", new DialogInterface.OnClickListener() {   
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      dialog.dismiss(); 
     } 
    }); 
    AlertDialog alert = builder.create(); 
    alert.show(); 
} 

Funciona bien, pero parece que el diálogo desaparece por sí mismo cuando se utiliza dentro de esta función:

public void test(String str){ 
    ShowMessageDialog("About to start new activity"); 
    Intent intent = new Intent(this,PageViewer.class); 
    startActivity(intent); 
} 

Parece que la nueva actividad se ha creado y, obviamente, se deshace del diálogo. ¿Pero por qué? ¿No debería detenerse la actividad antes de abrir la nueva?

Gracias!

Respuesta

5

La intención que está a punto de disparar no espera a que se cancele su diálogo. Entonces, justo después de que se muestra el diálogo, se inicia una nueva actividad. Se podría lograr lo que desea de esta manera:

public void ShowMessageDialog(String str){ 
    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setMessage(str); 
    builder.setCancelable(false); 
    builder.setNeutralButton("Ok", new DialogInterface.OnClickListener() {   
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      dialog.dismiss(); 
      Intent intent = new Intent(this,PageViewer.class); 
      startActivity(intent); 
     } 
    }); 
    AlertDialog alert = builder.create(); 
    alert.show(); 
} 

public void test(String str){ 
    ShowMessageDialog("About to start new activity"); 
} 
+1

también probablemente debería reemplazar a 'esto' en el constructor Intención con referencia a la actividad o contexto de aplicación, porque de esta manera 'esto' es, por ejemplo DialogInterface. No estoy seguro, pero creo que ya entendiste la idea. –

+0

¡Muchas gracias por la respuesta! – aarelovich

Cuestiones relacionadas