diff --git a/app/src/main/java/me/zobrist/tichucounter/BaseActivity.kt b/app/src/main/java/me/zobrist/tichucounter/BaseActivity.kt index c0aeb62..c4a0330 100644 --- a/app/src/main/java/me/zobrist/tichucounter/BaseActivity.kt +++ b/app/src/main/java/me/zobrist/tichucounter/BaseActivity.kt @@ -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) } } } \ No newline at end of file