用户输入的int不会为空

时间:2018-12-22 07:49:30

标签: android validation android-studio input

我编写了一个代码,其中用户将值放在某个范围内,并且我的代码为它们生成随机数。随机工作正常,但是当字段为空时,我的应用崩溃了,我该如何解决。

randNum.java

Button generateNum = findViewById(R.id.generate_number);

generateNum.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

        EditText et = findViewById(R.id.fromNum);
        String sTextFromET = et.getText().toString();
        int fNum = Integer.valueOf(sTextFromET);


        EditText et1 = findViewById(R.id.toNum);
        String sTextFromET1 = et1.getText().toString();
        int sNum = Integer.valueOf(sTextFromET1);

        TextView ans = findViewById(R.id.ans);

        //                if(sNum == null || fNum == null){
            //
            //                    ans.setText(getString(R.string.enterNumError));
            //
            //                }
        //                else
        if(sNum < fNum){

            ans.setText(getString(R.string.max_min_error));

        }else {

            final int random = new Random().nextInt((sNum - fNum) + 1) + fNum;
            String ras = Integer.toString(random);
            ans.setText(ras);

        }

    }
});

我尝试使用null,但是它不起作用。

2 个答案:

答案 0 :(得分:2)

您需要首先在单击按钮时进行验证。 (用于检查用户是否未输入任何内容或仅在任何编辑文本中输入空格)。

    btnSubmit.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            strNum1 = edtl.getText().toString().trim();
            strNum2 = edt2.getText().toString().trim();

            if (strNum1.length() == 0)
            {
                showAlert("Please enter Num 1");
            }
            else if (strNum2.length() == 0)
            {
                showAlert("Please enter Num 2");
            }
            else
            {
                int numvalue1 = Integer.parseInt(strNum1);
                int numvalue2 = Integer.parseInt(strNum2);
                generateNum (numvalue1, numvalue2);  //Call your function for generation of random number here
                //do your stuff here
            }
        }
    });

希望这有助于您了解空输入字段的表单验证。

PS:我建议您为EditTexts输入inputType属性,如果您尚未将它添加到xml文件中,例如:

android:inputType="number"

因此,如果用户输入任何字母或符号,则可以避免在Integer.parseInt出现异常。

答案 1 :(得分:1)

您需要处理 Integer.valueOf()函数引发的 NumberFormatException

try {
      EditText et = findViewById(R.id.fromNum);
      String sTextFromET = et.getText().toString();
      int fNum = Integer.valueOf(sTextFromET);


      EditText et1 = findViewById(R.id.toNum);
      String sTextFromET1 = et1.getText().toString();
      int sNum = Integer.valueOf(sTextFromET1);

      TextView ans = findViewById(R.id.ans);

      if(sNum < fNum){
          ans.setText(getString(R.string.max_min_error));
      }else {
          final int random = new Random().nextInt((sNum - fNum) + 1) + fNum;
          String ras = Integer.toString(random);
          ans.setText(ras);
      }
}catch(NumberFormatException e){
    Toast.makeText(this, "Invalid Input", Toast.LENGTH_SHORT).show();
}