javascript - EditText Values Get Written To Database Values On Cancel
问题描述
I have a dialog box that allowing the user to enter in values, each value gets validated to ensure the correct value has been entered. However on an invalid entry the values of the EditText are getting written to the SQLite database when the user clicks Cancel.
This is my code for the Dialog Box:
final AlertDialog alertDialog = alertDialogBuilderUserInput.create();
alertDialog.show();
alertDialog.getButton( AlertDialog.BUTTON_POSITIVE).setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View v) {
//Show Toast Message When No Text Is Entered
//Validation Being Done Here
if (TextUtils.isEmpty(inputScore.getText().toString())) {
inputScore.setText( "0" );
//return;
}
if (TextUtils.isEmpty(inputStrikes.getText().toString())) {
inputStrikes.setText( "0" );
//return;
}
if (TextUtils.isEmpty(inputSpares.getText().toString())) {
inputSpares.setText( "0" );
//return;
}
if (TextUtils.isEmpty(inputSplits.getText().toString())) {
inputSplits.setText( "0" );
//return;
}
if (TextUtils.isEmpty(inputSplitConversions.getText().toString())) {
inputSplitConversions.setText( "0" );
//return;
}
if (TextUtils.isEmpty(inputOpenFrames.getText().toString())) {
inputOpenFrames.setText( "0" );
//return;
}
final int valueScore = Integer.valueOf(inputScore.getText().toString());
final int valueStrikes = Integer.valueOf(inputStrikes.getText().toString());
final int valueSpares = Integer.valueOf(inputSpares.getText().toString());
final int valueSplits = Integer.valueOf(inputSplits.getText().toString());
final int valueSplitConversions = Integer.valueOf(inputSplitConversions.getText().toString());
final int valueOpenFrame = Integer.valueOf(inputOpenFrames.getText().toString());
if (valueScore > 300) {
inputScore.setError("Maximum value allowed is 300");
//return;
} else
if (valueStrikes > 12) {
inputStrikes.setError("Maximum value allowed is 12");
//return;
} else
if (valueSpares > 10) {
inputSpares.setError("Maximum value allowed is 10");
//return;
} else
if (valueSplits > 10) {
inputSplits.setError("Maximum value allowed is 10");
//return;
} else
if (valueSplitConversions > 10) {
inputSplitConversions.setError("Maximum value allowed is 10");
//return;
} else
if (valueOpenFrame > 10) {
inputOpenFrames.setError("Maximum value allowed is 10");
//return;
} else {
alertDialog.dismiss();
}
//Check If User Is Updating Game
//Create New Game
if (shouldUpdate && game != null) {
//Update Game By It's Id
updateGame(inputScore.getText().toString(), inputStrikes.getText().toString(), inputSpares.getText().toString(), inputSplits.getText().toString(), inputSplitConversions.getText().toString(), inputOpenFrames.getText().toString(), position);
} else {
createGame(leagueId.getText().toString(), bowlerId.getText().toString(), seriesId.getText().toString(), inputScore.getText().toString(), inputStrikes.getText().toString(), inputSpares.getText().toString(), inputSplits.getText().toString(), inputSplitConversions.getText().toString(), inputOpenFrames.getText().toString());
}
seriesAverage = db.getSeriesAverage(savedLeagueId, savedBowlerId, savedSeriesId);
bowlerAverage = db.getBowlerAverage(savedLeagueId, savedBowlerId);
leagueAverage = db.getLeagueAverage(savedLeagueId);
}
});
}
I would like it to display all the fields that are incorrect at once and not save the values on a cancel. Can't seem to get this to happen though. Below is a image of what is currently happening.
解决方案
试试这个代码,它带有一个布尔标志,指示所有值是否都有效。
我包含取消按钮的代码只是为了关闭对话框(我希望没有拼写错误)。
final AlertDialog alertDialog = alertDialogBuilderUserInput.create();
alertDialog.show();
alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View v) {
//Show Toast Message When No Text Is Entered
//Validation Being Done Here
Boolean allValid = true;
if (TextUtils.isEmpty(inputScore.getText().toString())) {
allValid = false;
inputScore.setText( "0" );
}
if (TextUtils.isEmpty(inputStrikes.getText().toString())) {
allValid = false;
inputStrikes.setText( "0" );
}
if (TextUtils.isEmpty(inputSpares.getText().toString())) {
allValid = false;
inputSpares.setText( "0" );
}
if (TextUtils.isEmpty(inputSplits.getText().toString())) {
allValid = false;
inputSplits.setText( "0" );
}
if (TextUtils.isEmpty(inputSplitConversions.getText().toString())) {
allValid = false;
inputSplitConversions.setText( "0" );
}
if (TextUtils.isEmpty(inputOpenFrames.getText().toString())) {
allValid = false;
inputOpenFrames.setText( "0" );
}
final int valueScore = Integer.valueOf(inputScore.getText().toString());
final int valueStrikes = Integer.valueOf(inputStrikes.getText().toString());
final int valueSpares = Integer.valueOf(inputSpares.getText().toString());
final int valueSplits = Integer.valueOf(inputSplits.getText().toString());
final int valueSplitConversions = Integer.valueOf(inputSplitConversions.getText().toString());
final int valueOpenFrame = Integer.valueOf(inputOpenFrames.getText().toString());
if (valueScore > 300) {
allValid = false;
inputScore.setError("Maximum value allowed is 300");
}
if (valueStrikes > 12) {
allValid = false;
inputStrikes.setError("Maximum value allowed is 12");
}
if (valueSpares > 10) {
allValid = false;
inputSpares.setError("Maximum value allowed is 10");
}
if (valueSplits > 10) {
allValid = false;
inputSplits.setError("Maximum value allowed is 10");
}
if (valueSplitConversions > 10) {
allValid = false;
inputSplitConversions.setError("Maximum value allowed is 10");
}
if (valueOpenFrame > 10) {
allValid = false;
inputOpenFrames.setError("Maximum value allowed is 10");
}
if (!allValid) {
return;
}
alertDialog.dismiss();
//Check If User Is Updating Game
//Create New Game
if (shouldUpdate && game != null) {
//Update Game By It's Id
updateGame(inputScore.getText().toString(), inputStrikes.getText().toString(), inputSpares.getText().toString(), inputSplits.getText().toString(), inputSplitConversions.getText().toString(), inputOpenFrames.getText().toString(), position);
} else {
createGame(leagueId.getText().toString(), bowlerId.getText().toString(), seriesId.getText().toString(), inputScore.getText().toString(), inputStrikes.getText().toString(), inputSpares.getText().toString(), inputSplits.getText().toString(), inputSplitConversions.getText().toString(), inputOpenFrames.getText().toString());
}
seriesAverage = db.getSeriesAverage(savedLeagueId, savedBowlerId, savedSeriesId);
bowlerAverage = db.getBowlerAverage(savedLeagueId, savedBowlerId);
leagueAverage = db.getLeagueAverage(savedLeagueId);
}
});
alertDialog.getButton( AlertDialog.BUTTON_NEGATIVE).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
alertDialog.dismiss();
}
});
推荐阅读
- resize - gnome 键绑定三分之一窗口大小
- html - 如何使用 Angular 5 和引导程序放置 x 按钮以清除输入字段中的内容
- directx - 桌面复制 API 中的 AcquireNextFrame() 和 ReleaseFrame() 随机死锁
- angular - Nativescript - 我的组件中不存在 ChangeDetectorRef
- c# - 使用 System.Web.Http 从控制器返回错误代码
- javascript - 创建一个包含另一个类的实例数组的类
- python - Pycharm:编译 Cython 扩展错误 - 无法执行“gcc”:没有这样的文件或目录
- sql - 查询以获取所有不同的行,添加一列指示每个重复项的总和
- jquery - ajax jquery中的标题
- javascript - 何时在 Chrome 清单中使用方括号?