Butterknife @BindColor: как передать параметр в метод и установить TextView Color?

== сравнивает ссылки на объекты в Java и не является исключением для объектов String.

Для сравнения фактического содержимого объектов (в том числе String) необходимо использовать equals.

Если сравнение двух объектов String с использованием == оказывается true, это связано с тем, что объекты String были интернированы, а виртуальная машина Java имеет несколько ссылки указывают на тот же экземпляр String. Не следует ожидать сравнения одного объекта String, содержащего то же содержимое, что и другой объект String, используя == для оценки как true.

-1
задан Marcello Câmara 11 March 2019 в 02:25
поделиться

2 ответа

Вы просто смешиваете две совершенно разные вещи: цвета и идентификаторы.

R.color.black - это идентификатор цвета, который вы создали в файле ресурсов, подобном этому # ff000000

black, как разрешено вашим BindColor (или getResources (). GetColor (R.color.black) в вашем собственном ответе) представляет собой целое число со значением, равным 0xff000000, которое равно -16777216

Итак, во втором переключателе вы передаете цвет и сравниваете его с идентификаторами, а затем ожидается, что вы не введете ничего случаи переключения.

Кстати, этот переключатель совершенно не нужен, так как все, что вы делали внутри, - это использование значения дважды (просто используйте цвет), но если вы действительно хотите использовать переключатель, вы должны использовать черный и белый как случаи, а не R.id .white и R.id.black с учетом того, что вы предоставили своей функции

0
ответ дан Xavier Falempin 11 March 2019 в 02:25
поделиться

Я решил свою проблему, прекратив использовать нож и создав класс для получения желаемого цвета.

public static int getColor(Context context, int color) {
    switch (color){
        case 1 : {
            return (context.getResources().getColor(R.color.yellow));
        }
        case 2 : {
            return (context.getResources().getColor(R.color.purple));
        }
        case 3 : {
            return (context.getResources().getColor(R.color.green));
        }
        case 4 : {
            return (context.getResources().getColor(R.color.grey));
        }
        case 5 : {
            return (context.getResources().getColor(R.color.red));
        }
        default : {
            return 0;
        }
    }
}

Наконец, мне просто нужно установить цвет следующим образом:

imageView.setColorFilter( ClassHelperCreated.getColor(this, color) );
0
ответ дан Marcello Câmara 11 March 2019 в 02:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: