これは本当に私を混乱させます。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
とき (つまり、true のとき) に値が適用されます。
ただし、上記のコードは機能しません。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
アクティビティがクラッシュする理由がわかりません。誰でもアイデアはありますか?ありがとう。