意外转换为AppCompatButton:布局标记为Button

时间:2015-11-03 09:10:33

标签: android android-studio casting android-appcompat lint

来自AppCompatButton参考页:

  

在布局中使用Button时,将自动使用此选项。编写自定义视图时,您只需手动使用此类。

我正常ButtonAppCompatButton,因此我可以使用setSupportBackgroundTintList方法:

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

它的构建和运行没有任何问题,但Android Studio 1.4在铸造生产线上给了我恼人的红色亮点:

  

对AppCompatButton的意外转换:布局标记为Button

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

它看起来像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;