Closed scsfwgy closed 3 years ago
场景模拟:首页四个tab:A、B、C、D;在B中又有三个Tab:E、F、G。现在点击A中的一个按钮,同时发出事件a,b。a定位首页的tab到B;b事件定位到B中的G。由于事件a、b是同时发出的,会存在B页面还没可见的时候就会触发b事件。这个时候setCurrentItem就会出现死循环,并且B中的定位回调失效。延时500ms执行setCurrentItem就没事。
/**设置tab的位置*/ fun setCurrentItem(index: Int, notify: Boolean = true, fromUser: Boolean = false) { if (currentItemIndex == index) { _scrollToCenter(index, tabIndicator.indicatorAnim) return } val targetView = dslSelector.visibleViewList.getOrNull(index) if (targetView == null || ViewCompat.isLaidOut(targetView)) { dslSelector.selector(index, true, notify, fromUser) } else { post { //逻辑一直执行这里 setCurrentItem(index, notify, fromUser) } } }
2.0.3已修复
2.0.3
感谢反馈.
场景模拟:首页四个tab:A、B、C、D;在B中又有三个Tab:E、F、G。现在点击A中的一个按钮,同时发出事件a,b。a定位首页的tab到B;b事件定位到B中的G。由于事件a、b是同时发出的,会存在B页面还没可见的时候就会触发b事件。这个时候setCurrentItem就会出现死循环,并且B中的定位回调失效。延时500ms执行setCurrentItem就没事。