From 6a989a8fc316a97e3f419142fda298b4491e8a16 Mon Sep 17 00:00:00 2001 From: y20k Date: Fri, 31 Jan 2020 14:51:31 +0100 Subject: [PATCH] trying to fix a bug where the shareed prferences listener has no context - not yet succeeded :-) --- .../java/org/y20k/trackbook/MainActivity.kt | 1 + .../java/org/y20k/trackbook/MapFragment.kt | 21 +++++++++++++++++-- .../main/java/org/y20k/trackbook/Trackbook.kt | 2 +- .../y20k/trackbook/helpers/AppThemeHelper.kt | 2 +- 4 files changed, 22 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/y20k/trackbook/MainActivity.kt b/app/src/main/java/org/y20k/trackbook/MainActivity.kt index 5f32941..157c11e 100644 --- a/app/src/main/java/org/y20k/trackbook/MainActivity.kt +++ b/app/src/main/java/org/y20k/trackbook/MainActivity.kt @@ -89,6 +89,7 @@ class MainActivity : AppCompatActivity() { } + /* Overrides onDestroy from AppCompatActivity */ override fun onDestroy() { super.onDestroy() // unregister listener for changes in shared preferences diff --git a/app/src/main/java/org/y20k/trackbook/MapFragment.kt b/app/src/main/java/org/y20k/trackbook/MapFragment.kt index c15fa1e..bccb22a 100644 --- a/app/src/main/java/org/y20k/trackbook/MapFragment.kt +++ b/app/src/main/java/org/y20k/trackbook/MapFragment.kt @@ -60,6 +60,7 @@ class MapFragment : Fragment(), YesNoDialog.YesNoDialogListener { private lateinit var currentBestLocation: Location private lateinit var layout: MapFragmentLayoutHolder private lateinit var trackerService: TrackerService + private lateinit var sharedPreferenceChangeListener2:SharedPreferences.OnSharedPreferenceChangeListener /* Overrides onCreate from Fragment */ @@ -249,6 +250,21 @@ class MapFragment : Fragment(), YesNoDialog.YesNoDialogListener { */ + private fun createSharedPreferenceChangeListener(): SharedPreferences.OnSharedPreferenceChangeListener { + return SharedPreferences.OnSharedPreferenceChangeListener { sharedPreferences, key -> + when (key) { + Keys.PREF_TRACKING_STATE -> { + if (isAdded) { + trackingState = PreferencesHelper.loadTrackingState(activity as Context) + layout.updateRecordingButton(trackingState) + } + } + } + } + } + + + /* * Defines callbacks for service binding, passed to bindService() */ @@ -259,7 +275,8 @@ class MapFragment : Fragment(), YesNoDialog.YesNoDialogListener { trackerService = binder.service bound = true // register listener for changes in shared preferences - PreferenceManager.getDefaultSharedPreferences(activity as Context).registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener) + sharedPreferenceChangeListener2 = createSharedPreferenceChangeListener() + PreferenceManager.getDefaultSharedPreferences(activity as Context).registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener2) // start listening for location updates handler.removeCallbacks(periodicLocationRequestRunnable) handler.postDelayed(periodicLocationRequestRunnable, 0) @@ -267,7 +284,7 @@ class MapFragment : Fragment(), YesNoDialog.YesNoDialogListener { override fun onServiceDisconnected(arg0: ComponentName) { bound = false // unregister listener for changes in shared preferences - PreferenceManager.getDefaultSharedPreferences(activity as Context).unregisterOnSharedPreferenceChangeListener(sharedPreferenceChangeListener) + PreferenceManager.getDefaultSharedPreferences(activity as Context).unregisterOnSharedPreferenceChangeListener(sharedPreferenceChangeListener2) // stop receiving location updates handler.removeCallbacks(periodicLocationRequestRunnable) } diff --git a/app/src/main/java/org/y20k/trackbook/Trackbook.kt b/app/src/main/java/org/y20k/trackbook/Trackbook.kt index 08dd3f3..cc9615d 100644 --- a/app/src/main/java/org/y20k/trackbook/Trackbook.kt +++ b/app/src/main/java/org/y20k/trackbook/Trackbook.kt @@ -38,7 +38,7 @@ class Trackbook: Application() { override fun onCreate() { super.onCreate() LogHelper.v(TAG, "Trackbook application started.") - // set Day / Night theme state + // set Dark / Light theme state AppThemeHelper.setTheme(PreferencesHelper.loadThemeSelection(this)) } diff --git a/app/src/main/java/org/y20k/trackbook/helpers/AppThemeHelper.kt b/app/src/main/java/org/y20k/trackbook/helpers/AppThemeHelper.kt index 74a4787..9500951 100644 --- a/app/src/main/java/org/y20k/trackbook/helpers/AppThemeHelper.kt +++ b/app/src/main/java/org/y20k/trackbook/helpers/AppThemeHelper.kt @@ -1,7 +1,7 @@ /* * AppThemeHelper.kt * Implements the AppThemeHelper object - * A AppThemeHelper can set the differnt app themes: Light Mode, Dark Mode, Follow System + * A AppThemeHelper can set the different app themes: Light Mode, Dark Mode, Follow System * * This file is part of * TRACKBOOK - Movement Recorder for Android