From e3f3eec9dcc34428faccb5853d4272686ff67c3a Mon Sep 17 00:00:00 2001 From: Hai Zhang Date: Mon, 23 Nov 2020 22:39:51 -0800 Subject: [PATCH] [Fix] Fix crash during activity recreation. --- .../me/zhanghai/android/files/util/AppBarLayoutExtensions.kt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/me/zhanghai/android/files/util/AppBarLayoutExtensions.kt b/app/src/main/java/me/zhanghai/android/files/util/AppBarLayoutExtensions.kt index 2931b8043..0ddedea42 100644 --- a/app/src/main/java/me/zhanghai/android/files/util/AppBarLayoutExtensions.kt +++ b/app/src/main/java/me/zhanghai/android/files/util/AppBarLayoutExtensions.kt @@ -12,7 +12,10 @@ fun AppBarLayout.updateLiftOnScrollOnPreDraw() { val consumed = IntArray(2) viewTreeObserver.addOnPreDrawListener { // Call AppBarLayout.Behavior.onNestedPreScroll() with dy == 0 to update lifted state. - val behavior = (layoutParams as CoordinatorLayout.LayoutParams).behavior!! + val behavior = (layoutParams as CoordinatorLayout.LayoutParams).behavior + // onPreDraw() somehow may be called before onMeasure() (where + // AppBarLayout.getBehavior() is called) during activity recreation. + ?: return@addOnPreDrawListener true val coordinatorLayout = parent as CoordinatorLayout behavior.onNestedPreScroll(coordinatorLayout, this, coordinatorLayout, 0, 0, consumed, 0) true