diff --git a/app/src/main/java/com/johan/evmap/MapsActivity.kt b/app/src/main/java/com/johan/evmap/MapsActivity.kt index f4e29457..698e61f7 100644 --- a/app/src/main/java/com/johan/evmap/MapsActivity.kt +++ b/app/src/main/java/com/johan/evmap/MapsActivity.kt @@ -20,6 +20,7 @@ const val REQUEST_LOCATION_PERMISSION = 1 class MapsActivity : AppCompatActivity() { interface FragmentCallback { fun getRootView(): CoordinatorLayout + fun goBack(): Boolean } private lateinit var navController: NavController @@ -48,7 +49,8 @@ class MapsActivity : AppCompatActivity() { } override fun onBackPressed() { - + val didGoBack = fragmentCallback?.goBack() ?: false + if (!didGoBack) super.onBackPressed() } fun navigateTo(charger: ChargeLocation) { diff --git a/app/src/main/java/com/johan/evmap/fragment/MapFragment.kt b/app/src/main/java/com/johan/evmap/fragment/MapFragment.kt index 684d8704..cba91ed4 100644 --- a/app/src/main/java/com/johan/evmap/fragment/MapFragment.kt +++ b/app/src/main/java/com/johan/evmap/fragment/MapFragment.kt @@ -2,7 +2,6 @@ package com.johan.evmap.fragment import android.Manifest import android.annotation.SuppressLint -import android.content.Context import android.content.Intent import android.content.pm.PackageManager import android.content.res.Configuration @@ -108,16 +107,16 @@ class MapFragment : Fragment(), OnMapReadyCallback, MapsActivity.FragmentCallbac ) } - override fun onAttach(context: Context) { - super.onAttach(context) + override fun onResume() { + super.onResume() val hostActivity = activity as? MapsActivity ?: return hostActivity.fragmentCallback = this } - override fun onDetach() { + override fun onPause() { + super.onPause() val hostActivity = activity as? MapsActivity ?: return hostActivity.fragmentCallback = null - super.onDetach() } private fun setupClickListeners() { @@ -428,17 +427,17 @@ class MapFragment : Fragment(), OnMapReadyCallback, MapsActivity.FragmentCallbac } } - fun goBack(): Boolean { - if (bottomSheetBehavior.state != BottomSheetBehaviorGoogleMapsLike.STATE_COLLAPSED && + override fun goBack(): Boolean { + return if (bottomSheetBehavior.state != BottomSheetBehaviorGoogleMapsLike.STATE_COLLAPSED && bottomSheetBehavior.state != BottomSheetBehaviorGoogleMapsLike.STATE_HIDDEN ) { bottomSheetBehavior.state = BottomSheetBehaviorGoogleMapsLike.STATE_COLLAPSED - return true + true } else if (bottomSheetBehavior.state == BottomSheetBehaviorGoogleMapsLike.STATE_COLLAPSED) { vm.charger.value = null - return true + true } else { - return false + false } }