这真的让我很困惑。我已将Button
课程扩展如下:
public class MyButton extends Button {
// Default colours/styles
private int myButtonDrawable = R.drawable.button_drawable;
private int myButtonTextColor = R.color.white_text;
// Constructors
public MyButton (Context context) {
super(context);
}
public MyButton(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyButton (Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
// Override setEnabled to apply custom colors/styles
@Override
public void setEnabled (boolean enabled) {
super.setEnabled(enabled);
if (enabled) {
this.setBackgroundResource(myButtonDrawable);
this.setTextColor(getResources().getColor(myButtonTextColor));
}
}
因此,通过使用设置器,我可以为每个对象设置值,myButtonDrawable
并且当我使用该方法启用按钮时(即当为真时),它们将被应用。myButtonTextColor
MyButton
setEnabled
但是,上面的代码不起作用。它与 logcat 一起崩溃
Caused by: android.view.InflateException: Binary XML file line #36: Error inflating class
该行发生错误
this.setTextColor(getResources().getColor(myButtonTextColor));
这真的很奇怪,因为如果我使用它就可以正常工作
this.setTextColor(getResources().getColor(R.color.white_text));
资源white_text
定义为
<color name="white_text">#FFFFFFFF</color>
我不明白为什么用R.color.white_text
类成员替换myButtonTextColor
会导致活动崩溃。有人有什么想法吗?谢谢。