Sé que esto fue preguntado hace un tiempo, pero esta es una solución muy buena que encontré.
que definen una interfaz de la siguiente manera:
public interface OpenDialog {
public void showDialog(DialogFragment dialog);
}
Qué mi actividad a continuación, implementos, pasando una referencia a sí mismo al cuadro de diálogo cuando se abre, usando mi clase InterfaceHolder:
public class MyActivity extends FragmentActivity implements OpenDialog {
@Override
protected void onCreate(Bundle arg0) {
super.onCreate(arg0);
InterfaceHolder.set(this);
showDialog(new DialogOne());
}
public void showDialog(DialogFragment dialog) {
dialog.show(getSupportFragmentManager(), "tag");
}
InterfaceHolder es solo una clase con una referencia estática a la interfaz que uso para pasarla:
public class InterfaceHolder {
private static OpenDialog openDialog;
public void set(OpenDialog openDialog)
this.openDialog = openDialog;
}
public void get()
return openDialog;
}
Entonces, el método showDialog mostrará cualquier diálogo que pase a él; como puede ver, hago esto para mostrar DialogOne. Ahora, si quiero abrir un nuevo cuadro de diálogo llamado "DialogTwo" "DialogOne" dentro de lo que puedo llamarlo por escrito:
InterfaceHolder.get().showDialog(new DialogTwo());
dismiss();
y listo, se muestra DialogTwo. Obviamente, debes tener cuidado para asegurarte de que se haya pasado una referencia a tu actividad al InterfaceHolder (una buena manera de hacer esto es poner InterfaceHolder.set (this) dentro del método showDialog), pero de lo contrario esto parece funcionar hermosamente.
Thanks Bill! ¡Esto funciona! Aparentemente, llamar a showDialog() del contexto de actividad no lo hace. – Akshay
No estoy seguro de haber aceptado Uageage_alertDialog.cancel(); en el lugar correcto, pero puedo decirte que cuando lo cancelé onClick() y luego intenté crear el cuadro de diálogo siguiente, causó un cierre forzado. Por lo tanto, me pareció natural simplemente mover su .cancel() justo después del segundo diálogo cancelar(). –
También podría notar un par de trucos geniales de Google Analytics allí ... Estoy grabando si esta ejecución de la aplicación fue una nueva instalación o una actualización. Si se trata de una actualización, estoy grabando la versión de la que provienen y la versión que se está instalando: 1.5-> 1.8, etc. –