Fix preference listener unregistered.
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2022-12-31 12:32:04 +01:00
parent 8fb90bd6d0
commit 39b092c7c5

View File

@@ -1,5 +1,6 @@
package me.zobrist.tichucounter
import android.content.SharedPreferences
import android.os.Bundle
import android.view.WindowManager
import androidx.appcompat.app.AppCompatActivity
@@ -7,7 +8,8 @@ import androidx.appcompat.app.AppCompatDelegate
import androidx.core.os.LocaleListCompat
import androidx.preference.PreferenceManager
abstract class BaseActivity : AppCompatActivity() {
abstract class BaseActivity : AppCompatActivity(), SharedPreferences.OnSharedPreferenceChangeListener {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -16,10 +18,20 @@ abstract class BaseActivity : AppCompatActivity() {
keepScreenOn(sharedPreferences.getBoolean("screen_on", false))
updateTheme(sharedPreferences.getString("theme", null))
PreferenceManager.getDefaultSharedPreferences(this).registerOnSharedPreferenceChangeListener(this)
}
override fun onResume() {
super.onResume()
PreferenceManager.getDefaultSharedPreferences(this).registerOnSharedPreferenceChangeListener(this)
}
PreferenceManager.getDefaultSharedPreferences(this)
.registerOnSharedPreferenceChangeListener { sharedPreferences, key ->
override fun onPause() {
super.onPause()
PreferenceManager.getDefaultSharedPreferences(this).unregisterOnSharedPreferenceChangeListener(this)
}
override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences, key: String?) {
if (key == "language") {
setLanguage(sharedPreferences.getString("language", null))
}
@@ -30,7 +42,7 @@ abstract class BaseActivity : AppCompatActivity() {
updateTheme(sharedPreferences.getString("theme", null))
}
}
}
private fun updateTheme(theme: String?) {
@@ -62,6 +74,9 @@ abstract class BaseActivity : AppCompatActivity() {
if (locale != null && locale != currentLocale) {
val newLocale = LocaleListCompat.forLanguageTags(locale)
AppCompatDelegate.setApplicationLocales(newLocale)
finish()
startActivity(intent)
}
}
}