1

我创建了一个带有 TextEdit 的对话框作为数字输入,以将其转换为双精度值。我想通过检查 TextEdit 输入是否为空来防止异常,但它总是跳转到 else 语句,因此当 Ed​​itText 为空时会创建异常。

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) 但这也不起作用。

谢谢你的帮助

4

3 回答 3

1

如果你想要一个EditText对象的文本,你应该使用下面的代码行:

input.getText().tostring();

input-对象在哪里EditText

使用代码

input.toString();

会给你一个对象的字符串表示,只要对象不是null,那个对象的 toString 就不是null,所以 usinginput.toString() != null不会给你任何有用的信息。

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

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

于 2012-10-21T10:08:14.297 回答
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();
                        }
于 2012-10-21T10:07:33.610 回答
0

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

使用以下条件

 if(input.getText().toString() != null || !input.getText().toString().isEmpty())
于 2012-10-21T10:08:31.030 回答