android 4.2のStateListDrawable
の新しいShapeDrawable()
を使用している人は誰ですか?Android 4.2のStateListDrawableでデフォルトのShapeDrawableを使用する
ShapeDrawable bg = new ShapeDrawable(); //default Ctor
ShapeDrawable hl = new ShapeDrawable();
hl.getPaint().setColor(color1);
bg.getPaint().setColor(color2);
StateListDrawable s1 = new StateListDrawable();
s1.addState(new int[]{android.R.attr.state_pressed}, hl);
s1.addState(new int[]{}, bg);
しかし、これはnullpointerexception
を投げ、Androidの4.2にはもう動作しません:私はこれを行うために使用される
java.lang.NullPointerException
at android.graphics.drawable.ShapeDrawable.mutate(ShapeDrawable.java:387)
at android.graphics.drawable.DrawableContainer.selectDrawable(DrawableContainer.java:315)
at android.graphics.drawable.StateListDrawable.onStateChange(StateListDrawable.java:106)
at android.graphics.drawable.StateListDrawable.addState(StateListDrawable.java:89)
私は私のShapeDrawable
のコンストラクタを変更することで問題を修正:
ShapeDrawable bg = new ShapeDrawable(new RectShape());
ShapeDrawable hl = new ShapeDrawable(new RectShape());
これは素晴らしいですが、これはデフォルトコンストラクタでは動作しなかった理由)= を知って
はお時間:)