From a6eeb78d3f2ef08542c4c6cc97566ec79b33cd59 Mon Sep 17 00:00:00 2001 From: Johan von Forstner Date: Sat, 11 Apr 2020 19:51:03 +0200 Subject: [PATCH] make onBackPressed work --- .../main/java/com/johan/evmap/MapsActivity.kt | 4 +++- .../com/johan/evmap/fragment/MapFragment.kt | 19 +++++++++---------- 2 files changed, 12 insertions(+), 11 deletions(-) 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 } }