diff --git a/multistatepage/src/main/java/com/zy/multistatepage/MultiStateContainer.kt b/multistatepage/src/main/java/com/zy/multistatepage/MultiStateContainer.kt index c62cce7..d22ec00 100644 --- a/multistatepage/src/main/java/com/zy/multistatepage/MultiStateContainer.kt +++ b/multistatepage/src/main/java/com/zy/multistatepage/MultiStateContainer.kt @@ -21,10 +21,12 @@ import com.zy.multistatepage.state.SuccessState @SuppressLint("ViewConstructor") class MultiStateContainer : FrameLayout { - var originTargetView: View? = null - var onRetryEventListener: OnRetryEventListener? = null + private var originTargetView: View? = null + + private var lastState: String = "" + constructor( context: Context, originTargetView: View, @@ -34,14 +36,20 @@ class MultiStateContainer : FrameLayout { this.onRetryEventListener = onRetryEventListener } - constructor(context: Context, attrs: AttributeSet?) : this(context, attrs, 0) - constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) { + constructor( + context: Context, + attrs: AttributeSet? + ) : this(context, attrs, 0) - } + constructor( + context: Context, + attrs: AttributeSet?, + defStyleAttr: Int + ) : super(context, attrs, defStyleAttr) override fun onFinishInflate() { super.onFinishInflate() - if (childCount == 1) { + if (originTargetView == null && childCount == 1) { originTargetView = getChildAt(0) } } @@ -66,6 +74,13 @@ class MultiStateContainer : FrameLayout { @JvmOverloads fun show(multiState: T, enableAnimator: Boolean = true, onNotifyListener: OnNotifyListener? = null) { + + if (lastState == multiState.javaClass.name) { + return + } + + lastState = multiState.javaClass.name + if (childCount == 0) { initialization() }