make onBackPressed work

This commit is contained in:
Johan von Forstner
2020-04-11 19:51:03 +02:00
parent 40a5f824c2
commit a6eeb78d3f
2 changed files with 12 additions and 11 deletions

View File

@@ -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) {

View File

@@ -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
}
}