diff --git a/app/src/main/java/org/mozilla/fenix/settings/DataChoicesFragment.kt b/app/src/main/java/org/mozilla/fenix/settings/DataChoicesFragment.kt index e66f77614a..b564efb0c9 100644 --- a/app/src/main/java/org/mozilla/fenix/settings/DataChoicesFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/settings/DataChoicesFragment.kt @@ -4,32 +4,45 @@ package org.mozilla.fenix.settings +import android.content.SharedPreferences import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import androidx.preference.PreferenceFragmentCompat import androidx.preference.SwitchPreference import org.mozilla.fenix.R -import org.mozilla.fenix.ext.requireComponents +import org.mozilla.fenix.ext.components import org.mozilla.fenix.utils.Settings class DataChoicesFragment : PreferenceFragmentCompat() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - (activity as AppCompatActivity).title = getString(R.string.preferences_data_choices) - (activity as AppCompatActivity).supportActionBar?.show() - - preferenceManager.sharedPreferences.registerOnSharedPreferenceChangeListener { sharedPreferences, key -> + private val preferenceChangeListener = + SharedPreferences.OnSharedPreferenceChangeListener { sharedPreferences, key -> when (key) { getString(R.string.pref_key_telemetry) -> { if (sharedPreferences.getBoolean(key, Settings.getInstance(requireContext()).isTelemetryEnabled)) { - requireComponents.analytics.metrics.start() + context?.components?.analytics?.metrics?.start() } else { - requireComponents.analytics.metrics.stop() + context?.components?.analytics?.metrics?.stop() } } } } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + (activity as AppCompatActivity).title = getString(R.string.preferences_data_choices) + (activity as AppCompatActivity).supportActionBar?.show() + + context?.let { + preferenceManager.sharedPreferences.registerOnSharedPreferenceChangeListener(preferenceChangeListener) + } + } + + override fun onDestroy() { + context?.let { + preferenceManager.sharedPreferences.unregisterOnSharedPreferenceChangeListener(preferenceChangeListener) + } + super.onDestroy() } override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {