2016-08-03 6 views
2

私はAlertDialogのリストアイテムの編集に取り組んでいます。私はBuilder.setViewで私のエディタのレイアウトを渡すことができます、そして、私はポジティブボタンのコールバックから結果を得ることができますが、私はビューを初期化する方法が表示されません。 E.特定の文字列を表示するなど、EditTextがあります。それは可能ですか?カスタムビューを持つAlertDialog.Builder:ビューを初期化するには?

私はDialogのサブクラスを作ることができたが、同じ結果を得るためにはもっと多くのユーティリティーコードが必要なようだ。あまりクリーンではないようです。

+0

「があります:

LayoutInflater inflater = this.getLayoutInflater(); View dialogView = inflater.inflate(R.layout.alert_label_editor, null); dialogBuilder.setView(dialogView); 

次に、あなたのEditTextとしてへの参照を取得n表示されるはずのEditText ... "このビューは' setView'のビューの一部ですか? – Shaishav

+0

@シャイアフ:正確に。 –

+0

編集テキストはレイアウトファイルで定義されていますか?はいの場合は、レイアウトファイルの名前を共有しますか? – W0rmH0le

答えて

5

(XMLレイアウトを使用していない、プログラムでそれを行う)のEditTextでアラートダイアログを作成する方法を紹介します:

EditText editText = (EditText) dialogView.findViewById(R.id.label_field); 
1

この非常に簡単な例では、事前にそれを膨張させることにより、ビューの参照を保持して、単に

public void showDialogWithEditText(){ 
     AlertDialog.Builder alert = new AlertDialog.Builder(this); 
     final EditText edittext = new EditText(this); 
     alert.setTitle("Enter your name:"); 
     alert.setView(edittext); 

     alert.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int whichButton) { 
       String value = edittext.getText().toString(); 
       // use the value. 

      } 
     }); 

     alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int whichButton) { 
       // cancel 
      } 
     }); 

     alert.show(); 
    } 
+1

私はあなたが私とは異なる質問に答えていたと思いますが、私は突然答えを読むときに必要なことをする方法を理解しました:)最初にこの場合は 'EditText')、初期化してビルダーに渡し、' create()。show() 'を呼び出します。 –

+0

はい、レイアウトに複数のビューがある場合、XMLからShaishavの答えを定義して膨張させる必要があります。次にsetView(...):)を使用してください。私の答えはちょっと役に立ちます:) – alway5dotcom

+0

「Dialog」と同じことをすることもできます。私の短いヒントはhttps://davidng94.wordpress.com/です。 2015/12/16/android-custom-a-simple-dialog / – alway5dotcom

関連する問題