我有一个自定义对话框,如果特定的EditText为空,我想禁用PositiveButton
。我找不到如何在对话框上执行此操作。这是我的代码:
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
View view = inflater.inflate(R.layout.layout_add_apero, null);
builder.setView(view)
.setTitle("Super un nouvel apéro !")
.setNegativeButton("Annuler", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
})
.setPositiveButton("Ajouter", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
String titre_apero = editTextApero.getText().toString();
String date_apero = editTextDate.getText().toString();
listener.applyTexts(titre_apero, date_apero);
}
});
editTextApero = view.findViewById(R.id.edit_apero);
editTextDate = view.findViewById(R.id.edit_date);
return builder.create();
}
因此,如果editTextApero
或editTextDate
字段为空,我想禁用PositiveButton
或执行弹出式窗口(但它是对话框中的弹出式窗口,同时也是一种弹出式窗口)表示用户必须填写每个字段。
仅在满足条件时拆分生成器表达式并添加肯定按钮。
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
if(editTextApero.getText().length() != 0) {
builder.setPositiveButton("Ajouter", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
String titre_apero = editTextApero.getText().toString();
String date_apero = editTextDate.getText().toString();
listener.applyTexts(titre_apero, date_apero);
}
});
}
EDIT我认为这是一种可能的方式:
将按钮设置为禁用以启动:
((AlertDialog)dialog).getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false);
然后将文本更改侦听器设置为EditText:
editTextApero.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
@Override
public void afterTextChanged(Editable s) {
if (TextUtils.isEmpty(s)) {
((AlertDialog) dialog).getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false);
} else {
((AlertDialog) dialog).getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(true);
}
}
});
如果要使其不可见,请改用:
((AlertDialog)dialog).getButton(AlertDialog.BUTTON_POSITIVE).setVisibility(View.INVISIBLE);
并退后
((AlertDialog)dialog).getButton(AlertDialog.BUTTON_POSITIVE).setVisibility(View.VISIBLE);