java - 如何在Android中禁用对话框按钮?
问题描述
PositiveButton
我有一个自定义对话框,如果特定的 EditText 为空,我想禁用它。我在对话框中找不到如何做到这一点。
这是我的代码:
@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);
推荐阅读
- excel - 如何索引匹配返回工作表之间的多个单词
- node.js - 是否可以使用 node.js 创建一个带有帐户管理的简单游戏 chrome 扩展?
- r - data.table 按函数分组返回多行或列表
- wordpress - WooCommerce 在哪里更改类别页面的样式
- java - 将 ArrayList 折叠为单个整数
- python - 将字典插入字典的排序列表
- android - 如何从默认资源以编程方式设置单选按钮的背景
- spring - 使用 Spring Boot 连接到 MongoDb
- flutter - 将嵌套地图转换为 json 以进行修补
- python - 在两个下拉列表之间解析