EditText 条件循环 Android Studio
EditText condition loop Android Studio
我有一个 EditText,我需要至少包含一个字符。
如果没有,我会提示 Toast 并要求用户重试。
问题是循环进入无穷大\ phone 被卡住了。
我认为这是一个简单的问题,但我不知道该怎么做。
我正在尝试从用户那里读取课程名称、成绩和分数。我需要在课程名称中至少包含一个字符。大概逻辑有问题。有什么提示吗?
public void readSubjectName() {
grades.add(new Grade()); // Create new grade
String tempSubject = inputLabel.getText().toString();
/** If the Subject name does not contain any characters,
* assume it's bad, toast and ask again.
*/
if (!(tempSubject.matches(".*[a-z].*"))) { // Subject Name does not contain any characters
Toast.makeText(getApplicationContext(), "Please enter a valid course name", Toast.LENGTH_LONG).show();
while (!(tempSubject.matches(".*[a-z].*"))) {
Toast.makeText(getApplicationContext(), "Please enter a valid course name", Toast.LENGTH_LONG).show();
}
}
grades.get(grades.size() - 1).setSubject(tempSubject); //Add subject
inputLabel.setText(null);
inputLabel.setHint("Enter Grade");
subjectButton.setVisibility(View.INVISIBLE);
gradeButton.setVisibility(View.VISIBLE);
}
试试这个代码
public void readSubjectName() {
grades.add(new Grade()); // Create new grade
String tempSubject = inputLabel.getText().toString();
if (tempSubject.isEmpty()) {
Toast.makeText(getApplicationContext(), "Please enter a valid course name", Toast.LENGTH_LONG).show();
//inputLabel.setError("Fill this field"); TODO: Check whether this works else display Toast Message
inputLabel.requestFocus();
}
grades.get(grades.size() - 1).setSubject(tempSubject); //Add subject
inputLabel.setText(null);
inputLabel.setHint("Enter Grade");
subjectButton.setVisibility(View.GONE);
gradeButton.setVisibility(View.VISIBLE);
}
希望这对您有所帮助。随时要求澄清...
使用下面的代码,您可以评估用户输入的 string/text 的长度,并检查它是否符合您的标准,
//read value from EditText to a String variable
val tempSubject: String = inputLabel.text.toString()
//check if the EditText have values or not
if(tempSubject.trim().length>1) {
Toast.makeText(applicationContext, "Message : "+tempSubject, Toast.LENGTH_SHORT).show()
}else{
Toast.makeText(applicationContext, "Please enter some message! ", Toast.LENGTH_SHORT).show()
}
所以我弄清楚出了什么问题,我需要保持当前状态而不是移动到下一个状态,直到我获得正确的输入,使用简单的“else”语句:
//check if the EditText have values or not
if (!(tempSubject.matches(".*[a-z].*"))) {
inputLabel.setError("Invalid name!");
inputLabel.requestFocus();
} else {
grades.get(grades.size() - 1).setSubject(tempSubject); //Add subject
inputLabel.setText(null);
inputLabel.setHint("Enter Grade");
subjectButton.setVisibility(View.INVISIBLE);
gradeButton.setVisibility(View.VISIBLE);
}
我遗漏了 else 语句,其余代码不在条件范围内,因此代码继续执行。
我有一个 EditText,我需要至少包含一个字符。 如果没有,我会提示 Toast 并要求用户重试。 问题是循环进入无穷大\ phone 被卡住了。 我认为这是一个简单的问题,但我不知道该怎么做。 我正在尝试从用户那里读取课程名称、成绩和分数。我需要在课程名称中至少包含一个字符。大概逻辑有问题。有什么提示吗?
public void readSubjectName() {
grades.add(new Grade()); // Create new grade
String tempSubject = inputLabel.getText().toString();
/** If the Subject name does not contain any characters,
* assume it's bad, toast and ask again.
*/
if (!(tempSubject.matches(".*[a-z].*"))) { // Subject Name does not contain any characters
Toast.makeText(getApplicationContext(), "Please enter a valid course name", Toast.LENGTH_LONG).show();
while (!(tempSubject.matches(".*[a-z].*"))) {
Toast.makeText(getApplicationContext(), "Please enter a valid course name", Toast.LENGTH_LONG).show();
}
}
grades.get(grades.size() - 1).setSubject(tempSubject); //Add subject
inputLabel.setText(null);
inputLabel.setHint("Enter Grade");
subjectButton.setVisibility(View.INVISIBLE);
gradeButton.setVisibility(View.VISIBLE);
}
试试这个代码
public void readSubjectName() {
grades.add(new Grade()); // Create new grade
String tempSubject = inputLabel.getText().toString();
if (tempSubject.isEmpty()) {
Toast.makeText(getApplicationContext(), "Please enter a valid course name", Toast.LENGTH_LONG).show();
//inputLabel.setError("Fill this field"); TODO: Check whether this works else display Toast Message
inputLabel.requestFocus();
}
grades.get(grades.size() - 1).setSubject(tempSubject); //Add subject
inputLabel.setText(null);
inputLabel.setHint("Enter Grade");
subjectButton.setVisibility(View.GONE);
gradeButton.setVisibility(View.VISIBLE);
}
希望这对您有所帮助。随时要求澄清...
使用下面的代码,您可以评估用户输入的 string/text 的长度,并检查它是否符合您的标准,
//read value from EditText to a String variable
val tempSubject: String = inputLabel.text.toString()
//check if the EditText have values or not
if(tempSubject.trim().length>1) {
Toast.makeText(applicationContext, "Message : "+tempSubject, Toast.LENGTH_SHORT).show()
}else{
Toast.makeText(applicationContext, "Please enter some message! ", Toast.LENGTH_SHORT).show()
}
所以我弄清楚出了什么问题,我需要保持当前状态而不是移动到下一个状态,直到我获得正确的输入,使用简单的“else”语句:
//check if the EditText have values or not
if (!(tempSubject.matches(".*[a-z].*"))) {
inputLabel.setError("Invalid name!");
inputLabel.requestFocus();
} else {
grades.get(grades.size() - 1).setSubject(tempSubject); //Add subject
inputLabel.setText(null);
inputLabel.setHint("Enter Grade");
subjectButton.setVisibility(View.INVISIBLE);
gradeButton.setVisibility(View.VISIBLE);
}
我遗漏了 else 语句,其余代码不在条件范围内,因此代码继续执行。