Неожиданное приведение к AppCompatButton: тег макета был кнопкой

Со справочной страницы AppCompatButton:

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

Я привожу обычный Button к AppCompatButton, чтобы использовать метод setSupportBackgroundTintList:

AppCompatButton button = (AppCompatButton) findViewById(R.id.normalButton);
button.setSupportBackgroundTintList(ColorStateList.valueOf(tintColor));

Он собирается и работает без каких-либо проблем, но Android Studio 1.4 раздражает меня красным цветом на линии литья:

Неожиданное приведение к AppCompatButton: тег макета был кнопкой

Любые идеи?


person Ashkan Sarlak    schedule 03.11.2015    source источник
comment
скорее всего это ошибка в идее   -  person Blackbelt    schedule 03.11.2015


Ответы (1)


Похоже на ошибку в проверке типа IDE — Button является прямым предком AppCompatButton, поэтому приведение к AppCompatButton должно быть в порядке. Я считаю, что вы можете смело называть это так:

Button button = (Button) findViewById(R.id.normalButton);
((AppCompatButton)button).setSupportBackgroundTintList(ColorStateList.valueOf(tintColor));

или лучше

((TintableBackgroundView)button).setSupportBackgroundTintList(ColorStateList.valueOf(tintColor));

Если вы используете Butterknife, все работает без каких-либо предупреждений:

@Bind(R.id.normalButton)
AppCompatButton button;
person shmoula    schedule 03.11.2015