在以下代码中,我正在回答用户对数学问题的回答。输入答案后,问题将更新为新问题。
如何添加验证,以便当用户输入字母或点击提交而不输入答案时,问题保持不变并允许用户再次输入。在那一刻,当发生这种情况时,应用程序崩溃了。 (注意:我所指的主要功能发生在onClick上)。
public class PracticeTest extends Activity implements View.OnClickListener{
//declare vars
int multiplier;
int[] results=new int[12];
int numberPassed;
TextView question;
EditText answer;
int score;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.practicetest);
// This declares and int variable, assigns it an int value from the
// calling Intent if its not there it is defaulted to 0
numberPassed = getIntent().getIntExtra("convertedNumber2", 0);
//setting up vars(possibly do this in different method?
Button submit = (Button) findViewById(R.id.btnGoPractice2); //declared here as it is only used once
answer = (EditText) findViewById(R.id.etEnterNumberPractice2);
question = (TextView) findViewById(R.id.tvTopPractice2);
//setting listeners
submit.setOnClickListener(this);
updateQuestion();
}
public void onClick(View view) {
// sets text view equal to whats typed in in editText
final String entry = answer.getText().toString();
// convert from string value to int
int a = Integer.parseInt(entry); //note: maybe change name
results[multiplier-1]=a;
score++;//Irrelevant?
if(multiplier<12){
//called after an answer is given
updateQuestion();
} else{
//System.out.println(score);
Intent intent = new Intent(this, Results.class);
intent.putExtra("results", results);
intent.putExtra("numberPassed", numberPassed);
this.startActivity(intent);
}
}
public void updateQuestion(){
multiplier++;
//string to hold quest
String q= numberPassed + "x" + multiplier + "=";
question.setText(q);
answer.setText("");
}
}
答案 0 :(得分:1)
所以entry
是你得到的答案吗?也许尝试正则表达式,您可以在提交答案后使用此代码,或者您可以在用户编辑EditText时进行检查。最后一件事可以用TextWatcher完成,但这会使它比必要的复杂一点。
if(entry.matches("[0-9]+") {
// new question
} else {
// warning no valid answer
}
如果您希望您的用户只能选择输入数字。您应该在EditText中设置:
android:inputType="number"