2017-04-12 3 views
0

特定の条件が満たされた場合(名前と姓が有効な場合)、AlertDialogを却下したいだけです。かかわらず、入力テキストの、ボタンが押されたときにAlertDialogが消え、このコードでLinearLayoutを使用したAlertDialogは、ボタンクリックで閉じるべきではありません。

final AlertDialog.Builder alert = new AlertDialog.Builder(this); 
    final TextView instructions = new TextView(this); 
    instructions.setText(R.string.alert_enter_data); 
    final EditText name = new EditText(this); 
    name.setHint(R.string.name); 
    final EditText surname = new EditText(this); 
    surname.setHint(R.string.surname); 
    LinearLayout ll=new LinearLayout(this); 
    ll.setOrientation(LinearLayout.VERTICAL); 
    ll.addView(instructions); 
    ll.addView(name); 
    ll.addView(surname); 
    alert.setView(ll); 
    alert.setNeutralButton(R.string.enter, new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int whichButton) { 
      String name_txt = name.getText().toString(); 
      String surname_txt = surname.getText().toString(); 
      if ((name_txt.length() > 1) && (surname_txt.length() > 1)) { 
       dialog.dismiss(); 
      } 
     } 
    }); 
    final AlertDialog alert_dialog = alert.create(); 
    alert_dialog.setCanceledOnTouchOutside(false); 
    alert_dialog.show(); 

:私のコードはこれです。私は次にこれを試しました:

alert_dialog.setOnShowListener(new DialogInterface.OnShowListener() { 

    @Override 
    public void onShow(DialogInterface dialog) { 

     Button b = alert.getButton(AlertDialog.BUTTON_POSITIVE); 
     b.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View view) { 
       String name_txt = name.getText().toString(); 
       String surname_txt = surname.getText().toString(); 
       String email_txt = email.getText().toString(); 
       String cellphone_txt = cellphone.getText().toString(); 
       String postcode_txt = postcode.getText().toString(); 
       if ((name_txt.length() > 1) && (surname_txt.length() > 1) && (email_txt.length() > 4)) { 
        if (debug_mode) {Log.i(TAG,"clause 1");} 
        String data_to_upload = name_txt + ", " + surname_txt + ", " + email_txt + ", "+ cellphone_txt + ", " + postcode_txt + "\n"; 
        // upload_to_github(data_to_upload); 
        alert_dialog.dismiss(); 
       } 
      } 
     }); 
    } 
}); 

しかし、私は全くボタンを得ません。 Alert Dialogには、EditTextフィールドのみが含まれています。

+0

ここを読んでいますか?:http://stackoverflow.com/a/27345656/2910520ボタンリスナをオーバーライドして、 'dialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(...)'を使用してAlertDialogが選択クリックで閉じるのを防ぐ必要があります。 showListenerを削除することができます。なぜなら、ボタンリスナ – MatPag

+0

を変更する前にダイアログを 'create()'して 'show()'する必要があるので注意してください。私は 'LinearLayout'を使用していると思いますが、私はここで失われています。 –

答えて

1
alert.setNeutralButton(R.string.enter, new DialogInterface.OnClickListener() { 

Button b = alert.getButton(AlertDialog.BUTTON_POSITIVE); 

両方が異なるボタンです。

ボタンB = alert.getButton(AlertDialog.BUTTON_NEUTRAL)をしてみてください。

関連する問題