Не могу поменять цвет кнопки андроид

У меня есть кнопка

    <Button
    android:id="@+id/save_btn"
    android:layout_width="272dp"
    android:layout_height="53dp"
    android:layout_marginTop="124dp"
    app:layout_constraintHorizontal_bias="0.5"
    app:cornerRadius="20dp"
    android:text="Сохранить"
    android:textSize="15sp" />

Я хочу динамически менять её бекграунд цвет.

     if (condition) {
            save_btn.setBackgroundColor(R.color.red)
        }
        else {
            save_btn.setBackgroundColor(R.color.colorPrimary)
        }

 <color name="colorPrimary">#B6B6B6</color>
<color name="red">#FF473D</color>

Но вместо красного цвета я получаю синий. Что происходит?

Но если я выйду из фрагмента и зайду обратно то цвет меняется нормально.

Disclaimer: эти три ответа не помогли:

https://stackoverflow.com/questions/52558780/how-to-change-background-color-to-materialbutton-from-android-support-design-pro
https://stackoverflow.com/questions/55087014/cant-change-background-color-on-materialbutton-without-change-coloraccent https://stackoverflow.com/questions/36875279/android-material-button-color https://stackoverflow.com/questions/26519979/coloring-buttons-in-android-with-material-design-and-appcompat


Ответы (1 шт):

Автор решения: Vladimir Tokarev

Вы должны получить цвет, используя метод ContextCompat.getColor()

save_btn.setBackgroundColor(ContextCompat.getColor(getContext(), R.color.red));
→ Ссылка