From 184fefdbc946dd41ed47df86deefb167b066550b Mon Sep 17 00:00:00 2001 From: Fredrik Berglund Date: Sat, 6 Oct 2018 18:15:11 +0200 Subject: [PATCH 1/2] Adds dismissRunnable which is removed on dismiss --- .../java/com/andrognito/flashbar/FlashbarContainerView.kt | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/flashbar/src/main/java/com/andrognito/flashbar/FlashbarContainerView.kt b/flashbar/src/main/java/com/andrognito/flashbar/FlashbarContainerView.kt index ebf6ac5..8965bd4 100644 --- a/flashbar/src/main/java/com/andrognito/flashbar/FlashbarContainerView.kt +++ b/flashbar/src/main/java/com/andrognito/flashbar/FlashbarContainerView.kt @@ -45,6 +45,7 @@ internal class FlashbarContainerView(context: Context) private var onTapOutsideListener: Flashbar.OnTapListener? = null private var overlayColor: Int? = null private var iconAnimBuilder: FlashAnimIconBuilder? = null + private var dismissRunnable: Runnable? = null private var duration = DURATION_INDEFINITE private var isBarShowing = false @@ -81,6 +82,8 @@ internal class FlashbarContainerView(context: Context) } override fun onDismiss(view: View) { + removeCallbacks(dismissRunnable) + (parent as? ViewGroup)?.removeView(this@FlashbarContainerView) isBarShown = false @@ -232,7 +235,8 @@ internal class FlashbarContainerView(context: Context) private fun handleDismiss() { if (duration != DURATION_INDEFINITE) { - postDelayed({ dismissInternal(TIMEOUT) }, duration) + dismissRunnable = Runnable { dismissInternal(TIMEOUT) } + postDelayed(dismissRunnable, duration) } } @@ -241,6 +245,8 @@ internal class FlashbarContainerView(context: Context) return } + removeCallbacks(dismissRunnable) + val exitAnim = exitAnimBuilder.withView(flashbarView).build() exitAnim.start(object : FlashAnim.InternalAnimListener { override fun onStart() { From 0df58da95c73c327e8066cc13ff57d1cc035644a Mon Sep 17 00:00:00 2001 From: Fredrik Berglund Date: Sat, 6 Oct 2018 19:44:08 +0200 Subject: [PATCH 2/2] Make dismissRunnable non-nullable --- .../java/com/andrognito/flashbar/FlashbarContainerView.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/flashbar/src/main/java/com/andrognito/flashbar/FlashbarContainerView.kt b/flashbar/src/main/java/com/andrognito/flashbar/FlashbarContainerView.kt index 8965bd4..a6ea1e7 100644 --- a/flashbar/src/main/java/com/andrognito/flashbar/FlashbarContainerView.kt +++ b/flashbar/src/main/java/com/andrognito/flashbar/FlashbarContainerView.kt @@ -32,6 +32,8 @@ import com.andrognito.flashbar.util.getRootView internal class FlashbarContainerView(context: Context) : RelativeLayout(context), DismissCallbacks { + private val dismissRunnable = Runnable { dismissInternal(TIMEOUT) } + internal lateinit var parentFlashbar: Flashbar private lateinit var flashbarView: FlashbarView @@ -45,7 +47,6 @@ internal class FlashbarContainerView(context: Context) private var onTapOutsideListener: Flashbar.OnTapListener? = null private var overlayColor: Int? = null private var iconAnimBuilder: FlashAnimIconBuilder? = null - private var dismissRunnable: Runnable? = null private var duration = DURATION_INDEFINITE private var isBarShowing = false @@ -235,7 +236,6 @@ internal class FlashbarContainerView(context: Context) private fun handleDismiss() { if (duration != DURATION_INDEFINITE) { - dismissRunnable = Runnable { dismissInternal(TIMEOUT) } postDelayed(dismissRunnable, duration) } }