Android StateListDrawable遇到的问题

最近使用StateListDrawable时候遇到了一个问题,最后也没有得到解决,但是没看见有人遇见相同的问题,放在这里有机会仔细研究一下,如果解决了会贴出解决方案。StateListDrawable是相当于一个Selector xml,用于抉择控件在不同状态时候的显示。addState(int 状态,drawable 显示的样式或图片)来添加某种状态下需要显示的样式,当然最后你要setBackground。
好了下面是错误Log:

09-02 17:37:32.498 28957 29062 E AndroidRuntime: Caused by: android.view.ViewRootImpl CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views. 09-02 17:37:32.498 28957 29062 E AndroidRuntime: at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:6416) 09-02 17:37:32.498 28957 29062 E AndroidRuntime: at android.view.ViewRootImpl.invalidateChildInParent(ViewRootImpl.java:926) 09-02 17:37:32.498 28957 29062 E AndroidRuntime: at android.view.ViewGroup.invalidateChild(ViewGroup.java:4691) 09-02 17:37:32.498 28957 29062 E AndroidRuntime: at android.view.View.invalidateInternal(View.java:11802) 09-02 17:37:32.498 28957 29062 E AndroidRuntime: at android.view.View.invalidate(View.java:11766) 09-02 17:37:32.498 28957 29062 E AndroidRuntime: at android.view.View.invalidate(View.java:11750) 09-02 17:37:32.498 28957 29062 E AndroidRuntime: at android.widget.ImageView.invalidateDrawable(ImageView.java:231) 09-02 17:37:32.498 28957 29062 E AndroidRuntime: at android.graphics.drawable.DrawableContainer.invalidateDrawable(DrawableContainer.java:371) 09-02 17:37:32.498 28957 29062 E AndroidRuntime: at android.graphics.drawable.Drawable.invalidateSelf(Drawable.java:368) 09-02 17:37:32.498 28957 29062 E AndroidRuntime: at android.graphics.drawable.Drawable.setVisible(Drawable.java:683) 09-02 17:37:32.498 28957 29062 E AndroidRuntime: at android.graphics.drawable.DrawableContainer$DrawableContainerState.addChild(DrawableContainer.java:761) 09-02 17:37:32.498 28957 29062 E AndroidRuntime: at android.graphics.drawable.StateListDrawableStateListState.addStateSet(StateListDrawable.java:349) 09-02 17:37:32.498 28957 29062 E AndroidRuntime: at android.graphics.drawable.StateListDrawable.addState(StateListDrawable.java:94)

这是在AsyncTask其中的doInBackground方法中出现的问题,很明显是非UI线程对控件操作造成的异常,但是在Demo中无论怎么addState也不会引起这个异常,最后采用的方法是将addState方法放置于doInBackground之外。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值