Fix preference listener unregistered.
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
@@ -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,22 +18,32 @@ abstract class BaseActivity : AppCompatActivity() {
|
||||
keepScreenOn(sharedPreferences.getBoolean("screen_on", false))
|
||||
updateTheme(sharedPreferences.getString("theme", null))
|
||||
|
||||
|
||||
|
||||
PreferenceManager.getDefaultSharedPreferences(this)
|
||||
.registerOnSharedPreferenceChangeListener { sharedPreferences, key ->
|
||||
if (key == "language") {
|
||||
setLanguage(sharedPreferences.getString("language", null))
|
||||
}
|
||||
if (key == "screen_on") {
|
||||
keepScreenOn(sharedPreferences.getBoolean("screen_on", false))
|
||||
}
|
||||
if (key == "theme") {
|
||||
updateTheme(sharedPreferences.getString("theme", null))
|
||||
}
|
||||
}
|
||||
PreferenceManager.getDefaultSharedPreferences(this).registerOnSharedPreferenceChangeListener(this)
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
PreferenceManager.getDefaultSharedPreferences(this).registerOnSharedPreferenceChangeListener(this)
|
||||
}
|
||||
|
||||
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))
|
||||
}
|
||||
if (key == "screen_on") {
|
||||
keepScreenOn(sharedPreferences.getBoolean("screen_on", false))
|
||||
}
|
||||
if (key == "theme") {
|
||||
updateTheme(sharedPreferences.getString("theme", null))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private fun updateTheme(theme: String?) {
|
||||
|
||||
var themeValue = when (theme) {
|
||||
@@ -62,6 +74,9 @@ abstract class BaseActivity : AppCompatActivity() {
|
||||
if (locale != null && locale != currentLocale) {
|
||||
val newLocale = LocaleListCompat.forLanguageTags(locale)
|
||||
AppCompatDelegate.setApplicationLocales(newLocale)
|
||||
|
||||
finish()
|
||||
startActivity(intent)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user