From f0f3d1600cd0d5ab5e60529d583ec39e92d834e8 Mon Sep 17 00:00:00 2001 From: Johan von Forstner Date: Sun, 29 Mar 2020 22:15:10 +0200 Subject: [PATCH] correctly implement onBackPresssed() --- .../main/java/com/johan/evmap/MapsActivity.kt | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/johan/evmap/MapsActivity.kt b/app/src/main/java/com/johan/evmap/MapsActivity.kt index ae2559ce..5787c058 100644 --- a/app/src/main/java/com/johan/evmap/MapsActivity.kt +++ b/app/src/main/java/com/johan/evmap/MapsActivity.kt @@ -66,6 +66,7 @@ class MapsActivity : AppCompatActivity(), OnMapReadyCallback { private val vm: MapsActivityViewModel by viewModels() private var markers: Map = emptyMap() private var clusterMarkers: List = emptyList() + private lateinit var bottomSheetBehavior: BottomSheetBehaviorGoogleMapsLike private var reenterState: Bundle? = null @@ -85,7 +86,7 @@ class MapsActivity : AppCompatActivity(), OnMapReadyCallback { setupAdapters() - val behavior = BottomSheetBehaviorGoogleMapsLike.from(binding.bottomSheet) + bottomSheetBehavior = BottomSheetBehaviorGoogleMapsLike.from(binding.bottomSheet) vm.charger.observe(this, object : Observer { var previousCharger = vm.charger.value @@ -95,11 +96,12 @@ class MapsActivity : AppCompatActivity(), OnMapReadyCallback { if (previousCharger == null || previousCharger!!.id != charger.id ) { - behavior.state = BottomSheetBehaviorGoogleMapsLike.STATE_COLLAPSED + bottomSheetBehavior.state = + BottomSheetBehaviorGoogleMapsLike.STATE_COLLAPSED loadChargerDetails() } } else { - behavior.state = BottomSheetBehaviorGoogleMapsLike.STATE_HIDDEN + bottomSheetBehavior.state = BottomSheetBehaviorGoogleMapsLike.STATE_HIDDEN } previousCharger = charger } @@ -359,6 +361,18 @@ class MapsActivity : AppCompatActivity(), OnMapReadyCallback { } } + override fun onBackPressed() { + if (bottomSheetBehavior.state != BottomSheetBehaviorGoogleMapsLike.STATE_COLLAPSED && + bottomSheetBehavior.state != BottomSheetBehaviorGoogleMapsLike.STATE_HIDDEN + ) { + bottomSheetBehavior.state = BottomSheetBehaviorGoogleMapsLike.STATE_COLLAPSED + } else if (bottomSheetBehavior.state == BottomSheetBehaviorGoogleMapsLike.STATE_COLLAPSED) { + vm.charger.value = null + } else { + super.onBackPressed() + } + } + private val exitElementCallback = object : SharedElementCallback() { override fun onMapSharedElements( names: MutableList,