Как сделать серым кнопку «Отправить», когда определенные поля EditText пусты? - PullRequest
4 голосов
/ 04 мая 2011

По поводу приложения для Android, которое я создаю:

У меня есть три поля EditText, которые должны быть заполнены числами / строками. У меня есть кнопка отправки, которая начнет серию расчетов.

Если какое-либо поле пусто и нажата кнопка подтверждения, приложение вылетает. Я пытался сделать это с помощью оператора try-catch, но это не сработало. Я просто хочу отключить кнопку, пока три поля не будут иметь номера. Я знаю, что есть способ setEnabled(false) Я думаю? Или есть лучший способ? Будет ли это серый кнопка? Или это не связанная функция setEnabled?

Ответы [ 4 ]

5 голосов
/ 04 мая 2011

Попробуйте это решение.

EditText edit1;
EditText edit2;
EditText edit3;
View button;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // Your initialization code...

    TextWatcher watcher = new LocalTextWatcher();
    edit1.addTextChangedListener(watcher);
    edit2.addTextChangedListener(watcher);
    edit3.addTextChangedListener(watcher);
    updateButtonState();
}

void updateButtonState() {
    boolean enabled = checkEditText(edit1)
        && checkEditText(edit2)
        && checkEditText(edit3);
    button.setEnabled(enabled);
}

private boolean checkEditText(EditText edit) {
    return Integer.getInteger(edit.getText().toString()) != null;
}

private class LocalTextWatcher implements TextWatcher {
    public void afterTextChanged(Editable s) {
        updateButtonState();
    }

    void beforeTextChanged(CharSequence s, int start, int count, int after) {
    }

    void onTextChanged(CharSequence s, int start, int before, int count) {
    }
}
0 голосов
/ 22 марта 2012

Привет, я попробовал приведенный выше код и изменил функцию на приведенную ниже, чтобы она работала.

private boolean checkEditText(EditText edit) {
    return ((edit.getText().toString()).length() >0 );
}
0 голосов
/ 06 сентября 2011

Вы также можете использовать этот чек

boolean checkEditText(EditText editText) {
    return editText.getText().toString().trim().equals("");
}
0 голосов
/ 04 мая 2011

Вы должны отключить кнопку по умолчанию в XML, чтобы пользователь не мог случайно нажать кнопку.После этого вам нужно просмотреть свои поля и убедиться, что на всех из них есть данные перед отправкой.

Вы можете сделать это или просто отправить команду, выполнить быструю проверку всех полей и не застраховать ни одно из них.равны "".

В основном это выглядит так (если вы хотите игнорировать скрытие кнопки и просто обрабатывать обработку после проверки)

if (!((t1.getText().toString.compareTo("") == 0) && (t2.getText().toString.compareTo("")==0) ...))
{
Do stuff
}

else
{
Toast message here
}

В противном случае вы можете просто иметь "наблюдатель""Как упомянуто выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...