Не удается проверить значение EditText в AlertDialog.Builder - PullRequest
1 голос
/ 05 декабря 2010

Я пытаюсь проверить значение EditText внутри моего AlertDialog.Builder, чтобы я мог запретить пользователю ничего не вводить в EditText.

По какой-то причине, когда я использую код ниже, он никогдапопадает в оператор if (mEditText.getText() == null || test == ""), вместо него всегда выполняется оператор else.

Есть идеи?Спасибо, ребята.

    @Override
    protected Dialog onCreateDialog(int id) {

        LayoutInflater factory = LayoutInflater.from(mContext);
        final View textEntryView = factory.inflate(R.layout.file_save_dialog, null);
        mEditText = (EditText) textEntryView.findViewById(R.id.file_name_edit);
        final Animation shake = AnimationUtils.loadAnimation(this, R.anim.shake); 

        return new AlertDialog.Builder(mContext)
            .setIcon(android.R.drawable.ic_menu_save)
            .setTitle(R.string.file_name_title)
            .setView(textEntryView)
            .setPositiveButton(R.string.dialog_ok, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int whichButton) {
                    String test = mEditText.getText().toString();

                    //This if never works...it always hits the else statement
                    if (mEditText.getText() == null || test == "") {
                        mEditText.startAnimation(shake);
                    }
                    else {
                        finish();
                    }

                }
            })
            .setNegativeButton(R.string.dialog_cancel, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int whichButton) {
                    finish();
                }
            })
            .create();
    }

Ответы [ 3 ]

2 голосов
/ 05 декабря 2010

Сделайте это способом Android:

if (TextUtils.isEmpty(mEditText.getText()) {
    mEditText.startAnimation(shake);
} else {
    finish();
}
1 голос
/ 23 октября 2012

Если вы хотите сравнить два строковых значения, используйте метод equals().

Например:

stringOne.equals(stringTwo);
1 голос
/ 05 декабря 2010

скажи вот так

if (test == null || test.length() <= 0) {
    mEditText.startAnimation(shake);
}
else {
    finish();
}
...