gpt4 book ai didi

java - Android:在某些情况下禁用 AlertDialogBu​​ilder 的确定按钮

转载 作者:行者123 更新时间:2023-11-30 00:56:07 24 4
gpt4 key购买 nike

所以我有一个在单击按钮时弹出的菜单。在该菜单中,用户可以输入可以是字符串的“作业名称”,以及可以是数字的“等级”和“可用的最大分数”。现在我想确保用户不会在任何这些 EditText 字段中输入任何内容或 null。那么有没有办法在输入有效输入之前禁用 OK 按钮。下面是弹出窗口的图片。

enter image description here

下面是我在MainActivity中的代码

Button add = (Button)findViewById(R.id.addBtn);
add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view){
LayoutInflater li = LayoutInflater.from(context);
View promptsView = li.inflate(R.layout.add_individual_name, null);

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context);
alertDialogBuilder.setView(promptsView);

final EditText assignmentName = (EditText) promptsView.findViewById(R.id.enteredIndividualName);
final EditText gradeReceived = (EditText) promptsView.findViewById(R.id.enteredUserGrade);
final EditText maxPoints = (EditText) promptsView.findViewById(R.id.enteredMaxPoints);
alertDialogBuilder.setCancelable(false)
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
String name = assignmentName.getText().toString();
String grade = gradeReceived.getText().toString();
String totalPossible = maxPoints.getText().toString();
checkIfNameAlreadyExists(name);
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});

final AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();

}});

此外,如果我的数据库中已存在“分配名称”,我想禁用“确定”按钮。我有一个检查项目是否存在于数据库中的函数。

如果您想查看 AlertDialog 或其他任何内容的 XML 代码,请告诉我。

谢谢

最佳答案

您应该为您的 EditText 添加 TextWatcher。在 afterTextChanged 中,只需检查启用/禁用 OK 按钮的条件

// Your alert dialog config
...
final AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();

// disable the button as default start
alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false);

// add TextWatcher for EditText
editTextAssignmentName.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {}

@Override
public void afterTextChanged(Editable s) {

if (s.length() >= 1) { // add your condition here, in your case it is checkIfNameAlreadyExists
alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(true);
} else {
alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false);
}
}
});

关于java - Android:在某些情况下禁用 AlertDialogBu​​ilder 的确定按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40144854/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com