java - 我希望我的警报对话框触发并保持显示错误消息
问题描述
如果用户将名称字段留空并单击确定,我希望我的警报对话框触发并保持显示错误消息,但即使用户没有填写任何内容并单击确定,我的对话框也会消失。这是我的代码。请建议我需要进行的更正。
save2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final dbmanager db= new dbmanager(cgpa3.this);
final AlertDialog.Builder alert = new AlertDialog.Builder(cgpa3.this);
// alert.setTitle("Enter a name");
alert.setMessage("Enter student Name");
// Set an EditText view to get user input
final EditText input = new EditText(cgpa3.this);
alert.setView(input);
alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
String value = input.getText().toString();
if(value.isEmpty()){
Animation shake = AnimationUtils.loadAnimation(cgpa3.this, R.anim.shake);
input.startAnimation(shake);
input.setError("Please enter student name");
}
else
{db.addRecord1(value,textView39.getText(),textView40.getText(),no_of_sem);
}
}
});
alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
// Canceled.
}
});
alert.show();
};
});
解决方案
用这个,
final EditText editText;
final AlertDialog.Builder alert = new AlertDialog.Builder(DemoActivity.this);
alert.setTitle("Enter a name");
alert.setMessage("Enter student Name");
alert.setCancelable(false);
editText = new EditText(DemoActivity.this);
alert.setView(editText);
alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}
});
alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}
});
final AlertDialog dialogs = alert.create();
dialogs.show();
dialogs.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String value = editText.getText().toString();
if (value.isEmpty()) {
editText.setError("Please enter student name");
}
else{
dialogs.dismiss();
}
}
});
dialogs.getButton(AlertDialog.BUTTON_NEGATIVE).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dialogs.dismiss();
}
});
推荐阅读
- git - 即使没有,git也会报告差异
- r - ggplot y 轴值显示为对数:我想让它们成为线性并将其减少到 100 秒而不是 1000 秒
- javafx - 如何在网格单元格中定位按钮
- python - 如何计算熊猫列单元格中的条件(IF)?
- arrays - 在过程和类对象之间移动数组
- ios - Ionic Cordova OpenTok 无法从 IOS 发布视频
- haskell - RandomGen 的 split 函数的确切语义应该是什么?
- python-3.8 - 在python中解析文本文件输入
- sql - 使用 PostgreSQL 12 在 jsonb 列的数组字段上搜索部分值
- r - 使用函数在几个原始字段上改变 df 以生成几个新列