2011-02-11 2 views
7

EULA画面のような警告ダイアログを表示する必要があります。 「これをもう一度表示しない」チェックボックスと、「OK」と「キャンセル」の最後の2つのボタンで、EULAを記述するテキストが表示されます。チェックボックスと2つのボタンが付いたアラートダイアログ

同じことについての助けがあれば幸いです。

警告ダイアログの一部としてtextviewとcheckboxを使用できますか?はいの場合、それを行う方法? すべてのサンプルコードが評価されます。

-Thanks &に関して、 まんじゅう

+3

EULAには「これをもう一度表示しない」というものはありません。下部に同意と同意しないボタンのみを表示します。プログラムのいくつかのメニューにEULAへのリンクを入れて、ユーザーがいつでも見られるようにします。 – Mudassir

+0

また、これがEULAの最適な設計ソリューションでない場合、これはオプションでさらなるアクションを実行できる他のダイアログに必要となる可能性があります。 –

答えて

15

私はMudassirに同意する必要があり、EULAには「表示しない」のチェックボックスを持っていると仮定しますが、ここであなたがそのかかわらような何かをやって行くことができる方法ですされていません。

AlertDialog.Builderを使用して、ビュー(XMLで設計可能)を含むダイアログボックスを構築できます。ここに例があります

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

あなたができることは、単一のオブジェクトであるCheckBoxを使用してXMLを作成することです。次に、ビューをAlertDialog.Builderに追加します。 AlertDialog.Builder.setMessage(ここでは「EULAメッセージ」)を使用してEULAメッセージを設定します。

+0

私はこの解決策が1行eulaBuilder.setView(eulaLayout)が欠けていると思います。 – Juhani

3
これら二つの異なる方法で

ルック:

1)より簡単かつ非常に高速な第一の方法:

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)第二の方法、よりカスタマイズされたレイアウトを持つ:

このpageを見ると、チェックボックスを作成するXMLコードもあります。

+0

これは時間が掛かっていますが、AlertDialogの内部でチェックボックスの値を取得する方法を最初の方法で覚えていますか? –

+0

"onClick"内のチェックボックス(以前は最終としてマークされています)を使用することができます。したがって、 "isChecked()"メソッドが利用可能であり、ok!を実行します。ありがとう! –

関連する問題