由于viewpager中包含了很多个fragment,每个fragment都使用到了QBadgeView,在切换过程中,遇到来回切换,然后QBadgeView就不会消失的情况。
问题思路:
1、当时怀疑过可能是view重叠导致,但QBadgeView是依附于父控件,所以布局中不好查看。
2、其次,以为是某一个属性导致,比如阴影、以及跟fragment缓存相关的变量导致,最后一个个遍历发现也不是导致的原因。
3、最后查看github的issue列表,最终发现问题所在https://github.com/qstumn/BadgeView/issues/90.
问题原因:
在viewpager中,为了节约资源,切换fragment的时候,会将之前的onDestroyView,每次重新进来,都会导致初始化一遍,QBadgeView也跟着一起又被初始化了,所以就造成了QBadgeView多次被实例的情况。找到原因,那么解决起来就很快了:
if(unReadMsgBadge == null){
unReadMsgBadge = new QBadgeView(getActivity()).bindTarget(ivMenu4);
unReadMsgBadge.setBadgeNumber(0);
unReadMsgBadge.setShowShadow(true);
}

所有评论(0)