Android - Как проверять в onClickListener на название кнопки

224
11 апреля 2017, 08:54

Необходимо проверять по тексту кнопки выполнять инструкции, что-то вроде:

private final View.OnClickListener onClickMenu = new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        switch (v.getResources().getText().toString()) {
            case '1':
                break;
            case '2':
                break;
        }
    }
};

Но, оно ругается и что поставить в свиче? Мне необходимо получать значение кнопки (getText) и выполнять действия.

Answer 1

Настоятельно рекомендую пересмотреть такое решение, писать логику по контенту кпопки мягко говоря это BadIdea, а так вы немного не то написали в условии, ((Button) v).getText().toString() и сравнивать необходимо: во-первых оператором equals(), а во-вторых со строкой "String"

@Override
    public void onClick(View v) {
        String text = ((Button) v).getText().toString()
        if (text.equals("2")) {
        } else if (text.equals("1")) {
        }
    }
Answer 2

В switch-case проверьте по id кнопки :)

Answer 3

Я думаю, что стоит сперва привести то Вью к ТекстВью и потом уже реагировать на текст.

   public void onClick(View v) {
            TextView tv = (TextView) v;
            switch (tv.getText()) {
                case "1":
                    break;
                case "2":
                    break;
            }
        }

Если листерен вешаете не только на ТекстВью, реккомендую добавить проверку:

if (v instance of TextView) 
READ ALSO
Библиотека обёртка над JDBC Java EE

Библиотека обёртка над JDBC Java EE

Подскажите пожалуйста есть ли какие-то обёртки над JDBC для удобной работы?

206
Enum дного пакета в Enum другого пакета. Java

Enum дного пакета в Enum другого пакета. Java

Есть класс enum A в пакете A1 и есть класс enum A в пакете B2, A1A отличается от B2

230
Есть ли в Android аналог виджета ColorDialog из Delphi?

Есть ли в Android аналог виджета ColorDialog из Delphi?

Нужно создать меню выбора цвета из палитрыВ Delphi есть ColorDialog

256