2011-02-11 14 views
7

Mam wymóg wyskakującego okna dialogowego z ostrzeżeniem, które przypomina ekran umowy EULA. Który będzie miał tekst opisujący umowę EULA z polem wyboru "Nie pokazuj tego ponownie", a na końcu 2 przyciski OK i Anuluj.Okno dialogowe z komunikatem z tekstem i polem wyboru oraz dwoma przyciskami

Każda pomoc dotycząca tego samego jest mile widziana.

Czy jest możliwe, aby tekst i pole wyboru były częścią okna dialogowego alertu? Jeśli tak, jak to zrobić? każdy przykładowy kod jest doceniany.

-dzięki & pozdrowienia, Manju

+3

Umowa licencyjna użytkownika oprogramowania nigdy nie ma "Nie pokazuj tego jeszcze raz". Podaj tylko przycisk Zgadzam się i nie zgadzam się na dole. I umieść link do swojej umowy EULA w jakimś menu w swoim programie, aby użytkownicy mogli je wyświetlać w dowolnym momencie. – Mudassir

+0

Również, jeśli nie jest to najlepsze rozwiązanie projektowe dla umowy EULA, może być potrzebne w przypadku innych dialogów, które mogą opcjonalnie wykonać dalsze działanie. –

Odpowiedz

15

muszę zgodzić się z Mudassir, EULA nie są przypuszczać, aby mieć „Nie pokazuj ponownie” wyboru, ale oto jak można zabrać coś takiego chociaż.

Możesz użyć AlertDialog.Builder do zbudowania okna dialogowego zawierającego widok (który możesz zaprojektować w XML). Oto przykład:

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

Co można zrobić, to utworzyć plik XML z pojedynczym obiektem, CheckBox. Następnie dodaj widok do AlertDialog.Builder. Użyj AlertDialog.Builder.setMessage ("Komunikat EULA tutaj"), aby ustawić komunikat EULA.

+0

Myślę, że w tym rozwiązaniu brakuje jednej linii eulaBuilder.setView (eulaLayout); – Juhani

3

Spójrz na tych dwóch różnych metod:

1) Pierwszy sposób bardziej prosty i bardzo szybki:

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) Druga metoda, z bardziej dostosowanych układ:

Wygląda to page, istnieje również kod XML, aby utworzyć pole wyboru.

+0

Minęło dużo czasu, ale czy w pierwszej metodzie mógłbyś zapamiętać, w jaki sposób uzyskałbyś wartość pola wyboru w AlertDialog? –

+0

Możesz użyć pola wyboru (wcześniej oznaczone jako końcowe) wewnątrz "onClick". Tak więc metoda "isChecked()" jest dostępna i działa poprawnie! Dzięki! –

Powiązane problemy