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
|
package me.zobrist.tichucounter
|
||||||
|
|
||||||
|
import android.content.SharedPreferences
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.WindowManager
|
import android.view.WindowManager
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
@@ -7,7 +8,8 @@ import androidx.appcompat.app.AppCompatDelegate
|
|||||||
import androidx.core.os.LocaleListCompat
|
import androidx.core.os.LocaleListCompat
|
||||||
import androidx.preference.PreferenceManager
|
import androidx.preference.PreferenceManager
|
||||||
|
|
||||||
abstract class BaseActivity : AppCompatActivity() {
|
|
||||||
|
abstract class BaseActivity : AppCompatActivity(), SharedPreferences.OnSharedPreferenceChangeListener {
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
@@ -16,22 +18,32 @@ abstract class BaseActivity : AppCompatActivity() {
|
|||||||
keepScreenOn(sharedPreferences.getBoolean("screen_on", false))
|
keepScreenOn(sharedPreferences.getBoolean("screen_on", false))
|
||||||
updateTheme(sharedPreferences.getString("theme", null))
|
updateTheme(sharedPreferences.getString("theme", null))
|
||||||
|
|
||||||
|
PreferenceManager.getDefaultSharedPreferences(this).registerOnSharedPreferenceChangeListener(this)
|
||||||
|
|
||||||
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))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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?) {
|
private fun updateTheme(theme: String?) {
|
||||||
|
|
||||||
var themeValue = when (theme) {
|
var themeValue = when (theme) {
|
||||||
@@ -62,6 +74,9 @@ abstract class BaseActivity : AppCompatActivity() {
|
|||||||
if (locale != null && locale != currentLocale) {
|
if (locale != null && locale != currentLocale) {
|
||||||
val newLocale = LocaleListCompat.forLanguageTags(locale)
|
val newLocale = LocaleListCompat.forLanguageTags(locale)
|
||||||
AppCompatDelegate.setApplicationLocales(newLocale)
|
AppCompatDelegate.setApplicationLocales(newLocale)
|
||||||
|
|
||||||
|
finish()
|
||||||
|
startActivity(intent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user