AlertDialog EditText输入验证不起作用

时间:2012-10-21 10:03:47

标签: android if-statement dialog android-edittext validation

我创建了一个带有TextEdit作为数字输入的Dialog,将其转换为double值。 我想通过检查来阻止异常,如果TextEdit输入为空但它总是跳转到else语句,因此当EditText为空时会产生异常。

final Builder builder = new Builder(this);
            final EditText input = new EditText(this);
            input.setKeyListener(DigitsKeyListener.getInstance(false, true));
            builder
                .setTitle(R.string.dialog_title_addmark)
                .setMessage(R.string.dialog_addmark)
                .setView(input)
                .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {

                    public void onClick(DialogInterface dialog, int which) {
                        if (input.toString().trim().length() == 0) {

                            Toast.makeText(Marks.this, R.string.input_empty, Toast.LENGTH_SHORT).show();

                        } else {
                            Double value = Double.valueOf(input.getText().toString());
                            db.insertMark(selection, value);
                            getData();
                        }
                    }
                })
                .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {

                    public void onClick(DialogInterface dialog, int which) {
                    }

                })
                .show();

我也尝试过检查     (input.toString()!= null) 但这也不起作用。

感谢您的帮助

3 个答案:

答案 0 :(得分:1)

如果您想要EditText对象中的文本,则应使用以下代码行:

input.getText().tostring();

其中inputEditText - 对象。

使用代码

input.toString();

将为您提供对象的字符串表示形式,只要该对象不是null,该对象的toString将不是null,因此使用input.toString() != null将不会给你任何有用的信息。

这意味着您应该进行以下验证:

if (input.getText().toString().trim().length() == 0)以确定输入对象是否包含一些文本。

答案 1 :(得分:0)

试试这种方式..

                     if (input.toString().trim().length()< 0) {

                            Toast.makeText(Marks.this, R.string.input_empty, Toast.LENGTH_SHORT).show();

                        } else {
                            Double value = Double.valueOf(input.getText().toString());
                            db.insertMark(selection, value);
                            getData();
                        }

答案 2 :(得分:0)

input.toString()将返回Edittext的引用值,而不是Edittext中的文本。

使用以下条件

 if(input.getText().toString() != null || !input.getText().toString().isEmpty())
相关问题