2011-02-11 12 views
7

Ho bisogno di far apparire la finestra di avviso che è come una schermata EULA. Che avrà testo che descrive EULA con una casella di controllo "Non mostrare più questo" e alla fine 2 pulsanti per OK e Annulla.Finestra di avviso con testo seguito con una casella di spunta e 2 pulsanti

Qualsiasi aiuto per quanto riguarda lo stesso è apprezzato.

È possibile avere la vista testuale e la casella di controllo come parte della finestra di dialogo di avviso? Se sì, come si fa? qualsiasi codice di esempio è apprezzato.

-Grazie & saluti, Manju

+3

Un EULA non ha mai una cosa "Non mostrare più". Fornire solo il pulsante Accetto e Non Accetto in fondo. E inserisci un link al tuo EULA in qualche menu del tuo programma, in modo che gli utenti possano vederlo ogni volta che lo desiderano. – Mudassir

+0

Anche se questa non è la migliore soluzione di progettazione per EULA, questa può essere necessaria per altre finestre di dialogo che potrebbero facoltativamente eseguire un'ulteriore azione. –

risposta

15

Sono d'accordo con Mudassir, EULA non sono supponiamo di avere "Non mostrare più" caselle di controllo, ma ecco come si potrebbe andare a fare una cosa del genere però.

È possibile utilizzare un AlertDialog.Builder per creare una finestra di dialogo che contiene una vista (che è possibile progettare in XML). Ecco un esempio

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(); 

Quello che puoi fare è creare un XML con un singolo oggetto, CheckBox. Quindi aggiungi la vista in AlertDialog.Builder. Usa AlertDialog.Builder.setMessage ("Messaggio EULA qui") per impostare il tuo messaggio EULA.

+0

Penso che questa soluzione manchi una riga eulaBuilder.setView (eulaLayout); – Juhani

3

un'occhiata a questi due metodo diverso:

1) Primo metodo più semplice e molto veloce:

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) Secondo metodo, con un layout più personalizzata:

guarda questo page, c'è anche il codice XML per creare la casella di controllo.

+0

Ha passato un sacco di tempo, ma potresti ricordare nel primo metodo come si otterrebbe il valore della casella di controllo all'interno di AlertDialog? –

+0

Puoi usare la casella di controllo (precedentemente contrassegnata come finale) all'interno di "onClick". Quindi, il metodo "isChecked()" è disponibile e funziona ok !. Grazie! –

Problemi correlati