2017-02-21 24 views
1

Я создал диалоговое окно с предупреждением, в котором я показываю форму в диалоге. Я хочу, чтобы кнопка была отключена, если все поля в форме заполнены. код мог бы кто-нибудь помочь в этом. БлагодаряОтключить положительную кнопку в построителе диалогового окна предупреждения

 alertDialogBuilder.setPositiveButton("SAVE", new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int id) { 
        nameInput1 = data_txt1.getText().toString(); 
        nameInput2 = data_txt2.getText().toString(); 
        nameInput3 = data_txt3.getText().toString(); 
        nameInput4 = data_txt4.getText().toString(); 
        nameInput5 = data_txt5.getText().toString(); 

        nameInput6 = auto_txt1.getText().toString(); 
        nameInput7 = auto_txt2.getText().toString(); 
        nameInput8 = auto_txt3.getText().toString(); 
        nameInput9 = auto_txt4.getText().toString(); 
        nameInput10 = auto_txt5.getText().toString(); 
        nameInput11 = auto_txt6.getText().toString(); 
        nameInput12 = auto_txt7.getText().toString(); 
        nameInput13 = auto_txt8.getText().toString(); 
        nameInput14 = auto_txt9.getText().toString(); 

        nameInput15 = data_txt6.getText().toString(); 
        nameInput16 = data_txt7.getText().toString(); 



         Call<Void> completeQuestionnaireCall = spreadsheetWebService.completeQuestionnaire(nameInput1, nameInput2, nameInput3, nameInput4, nameInput5, nameInput6, nameInput7, nameInput8, nameInput9, nameInput10, nameInput11, nameInput12, nameInput13, nameInput14, nameInput15, nameInput16); 
         completeQuestionnaireCall.enqueue(callCallback); 
         dialog.dismiss(); 

        } 



       } 
      }); 

    alertDialogBuilder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int id) { 
      dialog.cancel(); 

     } 
    }); 

    alertDialogBuilder.show(); 
} 

ответ

0

Попробуйте

alertDialogBuilder.create() getButton (AlertDialog.BUTTON_POSITIVE) .setEnabled (ложь).

0

Использование можно сделать, как это для положительной кнопки:

dialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false); 

, и для отрицательной кнопки:

dialog.getButton(AlertDialog.BUTTON_NEGATIVE).setEnabled(false); 
0

Вы можете сделать это таким образом:

....your code for alert dialog 
    AlertDialog dialog = b.create(); // here b is reference of AlertDialog.Builder and in your case replace b with alertDialogBuilder 
    dialog.show(); 
    Button button = dialog.getButton(AlertDialog.BUTTON_POSITIVE); 
    button.setEnabled(false); 

Надежда это помогу.

0

Если я правильно понял ваше требование,

Вы можете использовать TextWatcher ..

Как это будет работать:
Добавить textwatcher в качестве слушателя для изменения текста в ваших inputfields, это обеспечило бы динамическая проверка на тех, кто за то, что «заполнены», и вы можете связать видимость вашей кнопки или включить/отключить соответственно

Вопросы, которые помогли бы:
1. Disable button when edittext fields are empty
2. Use on text changed listener

0

создать метод, который будет проверять все входы в классе Utils или можете использовать его в текущем классе

public static boolean checkifEmptyText(String[] fields,Context context) { 
    for (String currentField : fields) { 
     if (currentField.getText().toString().trim().length() <= 0) { 
      return false; 
     } 
    } 
    return true; 
} 

Теперь это проверить, как этот

if(checkifEmptyText(new String[]{all your strings}),context) 
{ 
Button button = dialog.getButton(AlertDialog.BUTTON_POSITIVE); 
button.setEnabled(true); 
} 
else 
{ 
Button button = dialog.getButton(AlertDialog.BUTTON_POSITIVE); 
button.setEnabled(false); 
} 
0

Вы также можете сделать следующим образом:

new AlertDialog.Builder(this) 
    .setMessage("This may take a while") 
    .setPositiveButton("OK", new android.content.DialogInterface.OnClickListener() { 
    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     ((AlertDialog)dialog).getButton(which).setVisibility(View.INVISIBLE); 
     // the rest of your stuff 
    } 
}) 
    .show();