2017-09-24 24 views
1

私はEditText入力フィールドを持つダイアログウィンドウを持っています。私は入力値を数回使用したいが、できるだけコードを少なくしたい。現時点では、すべてのボタンをクリックするたびにalertdialogBu​​ilderを設定する必要がありますが、これは非常に難しいことではありません。1つのコマンドに複数の関数を追加するにはどうすればよいですか?

私は私は私が

のようなドットでより多くの機能を追加することができます機能を行うことができるように、私のクラスや関数を設定する必要がありますどのように私alertDialogBu​​ilder

public static void makeEditTextInputDialog(String caption, final Context mContext){ 
     LayoutInflater inflater = LayoutInflater.from(mContext); 
     View inputDialogView = inflater.inflate(R.layout.dialog_input_edittext, null); 

    AlertDialog.Builder builder = new AlertDialog.Builder(mContext); 
     builder.setView(inputDialogView); 

     final EditText etInput = (EditText) inputDialogView.findViewById(R.id.et_inputdialog); 
     final TextView tvCaption = (TextView) inputDialogView.findViewById(R.id.tv_inputdialog_caption); 

     tvCaption.setText(caption); 

     builder .setCancelable(true) 
       .setPositiveButton(R.string.apply, new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which) { 

        } 
       }).setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       dialog.cancel(); 
      } 
     }); 

     AlertDialog alertDialog = builder.create(); 
     alertDialog.show(); 
    } 

のためにそのコードを使用

makeInputDialog(caption,context).newFunction(param).changeTheTextOfAnotherTextView(desiredTextView);

+0

ここ

は簡単な例でありますBuilderパターン==> http://www.vogella.com/tutorials/DesignPatternBuilder/article.html –

答えて

1

作成するBuilderクラスのインスタンスとしてそれぞれthisを返すようにすると、そのメソッドを呼び出すことができます。そうすることで、コールを '。'と連鎖させることができます。

class MessageBuilder { 
    String address = "unknown"; 
    String state = "unknown"; 
    String country = "unknown"; 

    MessageBuilder() {} 


    String show() { 
     return address + ", " + state + ", " + country; 
    } 

    MessageBuilder setAddress(String address) { 
     this.address = address; 
     return this; 
    } 

    MessageBuilder setState(String state) { 
     this.state = state; 
     return this; 
    } 

    MessageBuilder setCountry(String country) { 
     this.country = country; 
     return this; 
    } 
} 

あなたはsetメソッド一緒に連鎖することで、これを使用します:

MessageBuilder builder = new MessageBuilder(); 
    String msg = builder.setState("CA").setAddress("123 Main St.").show(); 
    Log.d("MessageBuilder", msg); 

...ログでこれを生成します。

09-24 14:25:16.254 {...} D/MessageBuilder: 123 Main St., CA, unknown 
+0

ありがとう、これは私です検索。 –

関連する問題