2011-02-11 6 views
7

Tengo el requisito de abrir un cuadro de diálogo de alerta que es como una pantalla de EULA. que tendrá un texto que describa el EULA con una casilla de verificación "No volver a mostrar esto" y al final 2 botones para Aceptar y Cancelar.Diálogo de alerta con el texto seguido de una casilla de verificación y 2 botones

Se agradece cualquier ayuda con respecto a la misma.

¿Es posible tener textview y checkbox como parte del diálogo de alerta? Si es así, ¿cómo hacer eso? se agradece cualquier código de muestra.

-gracias & cordiales, Manju

+3

Un EULA nunca tiene una cosa de 'No mostrar esto otra vez'. Proporcione solo el botón Agree and Disagree en la parte inferior. Y ponga un enlace a su EULA en algún menú de su programa, para que los usuarios puedan verlo en cualquier momento que lo deseen. – Mudassir

+0

Además, si esta no es la mejor solución de diseño para EULA, esto puede ser necesario para otros cuadros de diálogo que podrían realizar una acción adicional. –

Respuesta

15

Estoy de acuerdo con Mudassir, EULA no se supone que tienen "No mostrar de nuevo" casillas de verificación, pero aquí es cómo se puede ir haciendo algo por el estilo sin embargo.

Puede usar un AlertDialog.Builder para crear un cuadro de diálogo que contenga una vista (que puede diseñar en XML). Aquí hay un ejemplo

AlertDialog.Builder eulaBuilder = new AlertDialog.Builder(this); 
      LayoutInflater eulaInflater = LayoutInflater.from(this); 
      View eulaLayout = eulaInflater.inflate(R.layout.eula, null); 
      eulaBuilder.setView(eulaLayout); 
      Checkbox dontShowAgain = (CheckBox)eulaLayout.findViewById(R.id.dontShowAgain); 
      eulaBuilder.setPositiveButton("Agree", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface d, int m) { 
        // Do something 
       } 
      });   
      eulaBuilder.setNegativeButton("Disagree", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface d, int m) { 
        // Do something 
       } 
      }); 
      eulaMsg = eulaBuilder.create(); 

Lo que puedes hacer es crear un XML con un solo objeto, CheckBox. A continuación, agregue la vista en AlertDialog.Builder. Utilice AlertDialog.Builder.setMessage ("mensaje EULA aquí") para establecer su mensaje EULA.

+0

Creo que a esta solución le falta una línea eulaBuilder.setView (eulaLayout); – Juhani

3

vistazo a estas dos métodos diferentes:

1) Primer método más simple y muy rápido:

CheckBox checkBox = new CheckBox(this); 
checkBox.setText("This is your checkbox message"); 
LinearLayout linearLayout = new LinearLayout(this); 
linearLayout.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, 
         LinearLayout.LayoutParams.FILL_PARENT)); 
linearLayout.setOrientation(1);  
linearLayout.addView(checkBox); 

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this); 
alertDialogBuilder.setView(linearLayout); 
alertDialogBuilder.setTitle("This is the title of alert dialog"); 
alertDialogBuilder.setMessage("This is the message of alert dialog"); 
alertDialogBuilder.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface arg0, int arg1) { 
      // do something 
    } 
}); 
alertDialogBuilder.show(); 

2) En segundo método, con un diseño más personalizado:

mira esto page, también está el código XML para crear la casilla de verificación.

+0

Ha pasado mucho tiempo, pero ¿podría recordar en el primer método cómo obtendría el valor de la casilla dentro del AlertDialog? –

+0

Puede usar la casilla de verificación (marcada previamente como final) dentro de "onClick". Entonces, el método "isChecked()" está disponible y funciona bien !. ¡Gracias! –

Cuestiones relacionadas