gpt4 book ai didi

java - TextUtils setError() 显示在错误的 EditText 字段中

转载 作者:太空宇宙 更新时间:2023-11-04 12:07:20 27 4
gpt4 key购买 nike

正在寻求有关 TextUtils setError() 的一些建议和帮助,消息显示在错误的 EditText 中。我正在检查所有 EditText,以确保它们没有留空并且该部分正在工作,它只是指向第一个 EditText 字段,而不是留空的正确字段,我想知道如何让它指向正确的字段。我有所有消息都标记为 EditText 缺少的内容,正如您从下面的屏幕截图中看到的那样,背景提示“输入值...”为空,并且是 setError() 自定义标签所指向的内容,但警告感叹号位于完全不同的 EditText 字段。我该如何解决这个问题?我只是像这样调用 setError() 消息: someEditText.setError(此处自定义消息)。谢谢大家。

参见setError()屏幕截图:

setError()

这是我用于 EditText 字段的代码。

 /* Using the Pipe class setters to set the values collected from the editText fields. */
/*
Implementing the TextUtils.isEmpty() method for all text fields that are Strings in nature
to check for empty values. Surrounding all those EditText fields that capture doubles with
a try/catch and calling a custom Toast message for them to the user. All of the messages
state exactly which EditText field was left empty.
*/
newPipe.setJointId(etPipeId.getText().toString());
if (TextUtils.isEmpty((etPipeId.getText().toString()))) {
etPipeId.setError(EMPTY_VALUES+"\nPlease fill-in the "+DISPLAY_PIPE_ID+" field");
return;
}

newPipe.setJointNum(etPipeJtNum.getText().toString());
if (TextUtils.isEmpty((etPipeJtNum.getText().toString()))) {
etPipeId.setError(EMPTY_VALUES+"\nPlease fill-in the "+DISPLAY_PIPE_JT_NUM+" field");
return;
}

newPipe.setJointHeat(etPipeHeat.getText().toString());
if (TextUtils.isEmpty((etPipeHeat.getText().toString()))) {
etPipeId.setError(EMPTY_VALUES+"\nPlease fill-in the "+DISPLAY_PIPE_HEAT+" field");
return;
}

try {
newPipe.setJointLength(parseDouble(etPipeLt.getText().toString()));
}catch (Exception e) {
Toast.makeText(getApplicationContext()
,EMPTY_VALUES+"\nPlease fill-in the "+DISPLAY_PIPE_LT+" field",
Toast.LENGTH_LONG).show();
return;
}

newPipe.setJointManufacturer(etPipeManufacturer.getText().toString());
if (TextUtils.isEmpty((etPipeManufacturer.getText().toString()))) {
etPipeId.setError(EMPTY_VALUES+"\nPlease fill-in the "+ DISPLAY_JOINT_MANUFACTURER
+" field");
return;
}

try {
newPipe.setWallThickness(parseDouble(etPipeWallThick.getText().toString()));
}catch (Exception e) {
Toast.makeText(getApplicationContext()
,EMPTY_VALUES+"\nPlease fill-in the "+DISPLAY_JOINT_WALL_THICKNESS+" field",
Toast.LENGTH_LONG).show();
return;
}

newPipe.setGrade(etPipeGrade.getText().toString());
if (TextUtils.isEmpty((etPipeGrade.getText().toString()))) {
etPipeId.setError(EMPTY_VALUES+"\nPlease fill-in the "+ DISPLAY_GRADE
+" field");
return;
}

newPipe.setCoatingType(etPipeCoatType.getText().toString());
if (TextUtils.isEmpty((etPipeCoatType.getText().toString()))) {
etPipeId.setError(EMPTY_VALUES+"\nPlease fill-in the "+ DISPLAY_JOINT_COAT_TYPE
+" field");
return;
}

newPipe.setCoatingThick(etPipeCoatThick.getText().toString());
if (TextUtils.isEmpty((etPipeCoatThick.getText().toString()))) {
etPipeId.setError(EMPTY_VALUES+"\nPlease fill-in the "+ DISPLAY_JOINT_COAT_THICKNESS
+" field");
return;
}

try {
newPipe.setSizeDiameter(parseDouble(etPipeSizeDiameter.getText().toString()));
}catch (Exception e) {
Toast.makeText(getApplicationContext()
,EMPTY_VALUES+"\nPlease fill-in the "+ DISPLAY_JOINT_DIAMETER +" field",
Toast.LENGTH_LONG).show();
return;
}

newPipe.setCurrentLocation(etPipeLocation.getText().toString());
if (TextUtils.isEmpty((etPipeLocation.getText().toString()))) {
etPipeId.setError(EMPTY_VALUES+"\nPlease fill-in the "+ DISPLAY_CURRENT_LOCATION
+" field");
return;
}

try {
newPipe.setCuts(parseDouble(etPipeCuts.getText().toString()));
}catch (Exception e) {
Toast.makeText(getApplicationContext()
,EMPTY_VALUES+"\nPlease fill-in the "+ DISPLAY_CUTS +" field",
Toast.LENGTH_LONG).show();
return;
}

try {
newPipe.setNewLength(parseDouble(etPipeNewLt.getText().toString()));
}catch (Exception e) {
Toast.makeText(getApplicationContext()
,EMPTY_VALUES+"\nPlease fill-in the "+ DISPLAY_NEW_LT +" field",
Toast.LENGTH_LONG).show();
return;
}

newPipe.setChildJointId(etPipePup.getText().toString());
if (TextUtils.isEmpty((etPipePup.getText().toString()))) {
etPipeId.setError(EMPTY_VALUES+"\nPlease fill-in the "+ DISPLAY_CHILD_JT_ID
+" field");
return;
}

newPipe.setNotes(etPipeNotes.getText().toString());
if (TextUtils.isEmpty((etPipeNotes.getText().toString()))) {
etPipeId.setError(EMPTY_VALUES+"\nPlease fill-in the "+ DISPLAY_NOTES
+" field");
return;
}

/* Inserting the collected data from above into the insertPipe() method*/
if (dbHelper != null) {
dbHelper.insertPipe(newPipe);
}
finish();
if (dbHelper != null) {
dbHelper.close(); /* closing the database down here to prevent resource leaks.*/
}

} /* savePipe method ends here. */

最佳答案

问题在于您用来调用 setError(String message) 的编辑文本

    newPipe.setJointId(etPipeId.getText().toString());
if (TextUtils.isEmpty((etPipeId.getText().toString()))) {
etPipeId.setError(EMPTY_VALUES+"\nPlease fill-in the "+DISPLAY_PIPE_ID+" field");
return;
}

newPipe.setJointNum(etPipeJtNum.getText().toString());
if (TextUtils.isEmpty((etPipeJtNum.getText().toString()))) {

// You are using etPipeId instead of etPipeJtNum
etPipeId.setError(EMPTY_VALUES+"\nPlease fill-in the "+DISPLAY_PIPE_JT_NUM+" field");

// Use this instead
etPipeJtNum.setError(EMPTY_VALUES+"\nPlease fill-in the "+DISPLAY_PIPE_JT_NUM+" field");

return;
}

希望这能解决您的问题。

编辑

按照评论中的要求删除重复代码并简化调试的建议。这就是我编写代码的方式。可能有更好的方法来组织和构建代码,但我也在学习:)

private boolean checkEditTextIsEmpty(EditText et, String errorMessage){
// Code Separate for easier reading
String text = et.getText().toString();

if (TextUtils.isEmpty(text)) {
// Can consider using String.format();
et.setError(EMPTY_VALUES+"\nPlease fill-in the "+errorMessage+" field");
return true;
}

return false;
}

//This is your function that you called newPipe.setJointId
boolean isIdEmpty = checkEditTextIsEmpty(etPipeId, DISPLAY_PIPE_ID);
if (isIdEmpty) return;

boolean isNumEmpty = checkEditTextIsEmpty(etPipeJtNum, DISPLAY_PIPE_JT_NUM);
if (isNumEmpty) return;

newPipe.setJointId(etPipeId.getText().toString());
newPipe.setJointNum(etPipeNum.getText().toString());

关于java - TextUtils setError() 显示在错误的 EditText 字段中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40227948/

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