我有一个自定义对话框,如果特定的 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);
}
});
}
编辑我认为这是一种可能的方式:
将按钮设置为禁用以启动:
((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);
关于java - 如何禁用Android中的对话框按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60915908/