1

数値入力としてテキストエディットを使用してダイアログを作成し、それを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)もチェックしてみましたが、どちらも機能しません。

ご協力いただきありがとうございます

4

3 に答える 3

1

オブジェクトからのテキストEditTextが必要な場合は、次のコード行を使用する必要があります。

input.getText().tostring();

ここinputで、はEditText-objectです。

コードを使用する

input.toString();

はオブジェクトの文字列表現を提供し、オブジェクトがでない限り、そのオブジェクトnullのtoStringはそうではないnullため、を使用しinput.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 に答える