Android:处理空白/无效条目?

时间:2014-04-16 17:09:29

标签: android validation

在以下代码中,我正在回答用户对数学问题的回答。输入答案后,问题将更新为新问题。

如何添加验证,以便当用户输入字母或点击提交而不输入答案时,问题保持不变并允许用户再次输入。在那一刻,当发生这种情况时,应用程序崩溃了。 (注意:我所指的主要功能发生在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("");
    }
}

1 个答案:

答案 0 :(得分:1)

所以entry是你得到的答案吗?也许尝试正则表达式,您可以在提交答案后使用此代码,或者您可以在用户编辑EditText时进行检查。最后一件事可以用TextWatcher完成,但这会使它比必要的复杂一点。

if(entry.matches("[0-9]+") {
  // new question
} else {
  // warning no valid answer
}

如果您希望您的用户只能选择输入数字。您应该在EditText中设置:

android:inputType="number"