==
сравнивает ссылки на объекты в Java и не является исключением для объектов String
.
Для сравнения фактического содержимого объектов (в том числе String
) необходимо использовать equals
.
Если сравнение двух объектов String
с использованием ==
оказывается true
, это связано с тем, что объекты String
были интернированы, а виртуальная машина Java имеет несколько ссылки указывают на тот же экземпляр String
. Не следует ожидать сравнения одного объекта String
, содержащего то же содержимое, что и другой объект String
, используя ==
для оценки как true
.
Вы просто смешиваете две совершенно разные вещи: цвета и идентификаторы.
R.color.black - это идентификатор цвета, который вы создали в файле ресурсов, подобном этому # ff000000
black, как разрешено вашим BindColor (или getResources (). GetColor (R.color.black) в вашем собственном ответе) представляет собой целое число со значением, равным 0xff000000, которое равно -16777216
Итак, во втором переключателе вы передаете цвет и сравниваете его с идентификаторами, а затем ожидается, что вы не введете ничего случаи переключения.
Кстати, этот переключатель совершенно не нужен, так как все, что вы делали внутри, - это использование значения дважды (просто используйте цвет), но если вы действительно хотите использовать переключатель, вы должны использовать черный и белый как случаи, а не R.id .white и R.id.black с учетом того, что вы предоставили своей функции
Я решил свою проблему, прекратив использовать нож и создав класс для получения желаемого цвета.
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) );