【问题标题】:App crashes with error 'Could not execute method for android:onClick' when try to validate empty field尝试验证空字段时,应用程序崩溃并出现错误“无法执行 android:onClick 的方法”
【发布时间】:2020-06-03 11:13:50
【问题描述】:

我尝试创建空字段验证,如果用户不输入任何字符串/整数并按下按钮,他将收到弹出窗口,说明该字段为空。

我愿意提供任何帮助。

请参阅下面的代码:

...

    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】:

    问题与

    有关
    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;
                ...
            }
        }
    

    【讨论】:

    • 谢谢,我听从了您的建议,但现在应用程序没有崩溃,但也没有响应。单击按钮后,我没有收到任何错误或任何 Toast。有什么建议吗?
    • 您也可以显示您的按钮 xml 代码吗?你有android:onClick="clickCheck"吗?
    • 你的意思是这段代码吗?
    • 能否也显示makeToast函数的内容?
    • public void makeToast (String string){ Toast.makeText(MainActivity.this,string,Toast.LENGTH_SHORT).show(); }
    【解决方案2】:

    感谢@Hakob,您的建议非常有效。 我的问题事后处理是因为我的 Toast 命令没有正确定义。

    所以我得到了这个:message = "please input something!!!!!";

    我改成这样:makeToast("please input something!!!!!");

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

    再次感谢大家的帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-12-14
      • 2016-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-04
      相关资源
      最近更新 更多