किसी और को एंड्रॉइड 4.2 में StateListDrawable
में एक नया ShapeDrawable()
का उपयोग करने में समस्याएं मिली हैं? मैं यह करने के लिए इस्तेमाल किया:Android में एक आकार सूची में डिफ़ॉल्ट आकार का उपयोग करना 4.2
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);
लेकिन यह एंड्रॉयड 4.2 में अब और काम नहीं करता है, फेंक एक nullpointerexception
:
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());
अब यह बहुत अच्छा काम करता है, लेकिन मुझे पसंद है जानना चाहता है कि यह डिफ़ॉल्ट निर्माता के साथ काम नहीं किया =)
अपना समय :)