当尝试验证空字段时,应用程序崩溃并出现 "无法执行android:onClick方法 "的错误。

问题描述 投票:0回答:1

我试图创建一个空字段验证,如果用户不输入任何StringInteger,只需按下按钮,他就会收到弹出窗口,说明该字段为空。

I would appriciate any help.

请看我下面的代码。

...

    public void clickCheck (View view) {
        EditText editText = (EditText) findViewById(R.id.userType);
        Integer userNum = Integer.parseInt(editText.getText().toString());
        String userField = editText.getText().toString().trim();
        String message = "";


        if (userField.isEmpty()) {
            message = "please input something!!!!!";
        } else {
            Shape mynumber = new Shape();
            mynumber.number = userNum;
            if ((mynumber.isSquareNum() == true) && (mynumber.isTriangularNum() == false)) {

                makeToast("The number " + userNum + " is a Square number.");
            } else if ((mynumber.isSquareNum() == false) && (mynumber.isTriangularNum() == true)) {
                makeToast("The number " + userNum + " is a Triangular number.");
            } else if ((mynumber.isSquareNum() == false) && (mynumber.isTriangularNum() == false)) {
                makeToast("The number " + userNum + " is a not Square or Triangular shape");
            } else if ((mynumber.isSquareNum() == true) && (mynumber.isTriangularNum() == true)) {
                makeToast("The number " + userNum + " is both Square & Triangular shapes");
            }

        }
    }


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}
java android-studio-3.0
1个回答
0
投票

这个问题与

Integer userNum = Integer.parseInt(editText.getText().toString());

它可能会使 NumberFormatException 而你要等到验证后才会到达。

你可以试试这样

    public void clickCheck (View view) {
        EditText editText = (EditText) findViewById(R.id.userType);
        String userField = editText.getText().toString().trim();
        String message = "";
        if (userField.isEmpty()) {
            message = "please input something!!!!!";
        } else {
            Shape mynumber = new Shape();
            Integer userNum;
            try {
                userNum = Integer.parseInt(editText.getText().toString());
            }catch (NumberFormatException ex) {
                message = "Not an integer";
            }
            mynumber.number = userNum;
            ...
        }
    }

0
投票

谢谢 @Hakob 你的建议非常好.我的问题是由于我的Toast命令没有被正确定义。

所以我有这样的: message = "please input something!!!!".我改成: makeToast("please input something!!!");

然后我改成了:makeToast("please input something!!!")。

实际上我根本没有定义Toast命令,所以应用程序不理解它应该弹出一个消息:)。

再次感谢大家的帮助。

© www.soinside.com 2019 - 2024. All rights reserved.