Fix unexpected settings dialog behaviour

This commit is contained in:
Niko Diamadis
2023-02-13 16:55:36 +01:00
parent aea9c0c346
commit 544c960bff

View File

@@ -57,18 +57,6 @@ internal class SettingsActivity : AppCompatActivity(), OnSharedPreferenceChangeL
sharedPreferences.getString(key, getString(R.string.theme_default))!! sharedPreferences.getString(key, getString(R.string.theme_default))!!
) )
} }
getString(R.string.setting_key_notification_channels) -> {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) return
val dialogBuilder = MaterialAlertDialogBuilder(this)
.setTitle(R.string.setting_notification_channels_dialog_title)
.setMessage(R.string.setting_notification_channels_dialog_message)
.setPositiveButton(android.R.string.ok, null)
if (!isFinishing) {
dialogBuilder.show()
}
}
} }
} }
@@ -86,6 +74,8 @@ internal class SettingsActivity : AppCompatActivity(), OnSharedPreferenceChangeL
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
val messageLayout: ListPreference? = val messageLayout: ListPreference? =
findPreference(getString(R.string.setting_key_message_layout)) findPreference(getString(R.string.setting_key_message_layout))
val notificationChannels: SwitchPreferenceCompat? =
findPreference(getString(R.string.setting_key_notification_channels))
messageLayout?.onPreferenceChangeListener = messageLayout?.onPreferenceChangeListener =
Preference.OnPreferenceChangeListener { _, _ -> Preference.OnPreferenceChangeListener { _, _ ->
MaterialAlertDialogBuilder(requireContext()) MaterialAlertDialogBuilder(requireContext())
@@ -103,6 +93,20 @@ internal class SettingsActivity : AppCompatActivity(), OnSharedPreferenceChangeL
.show() .show()
true true
} }
notificationChannels?.onPreferenceChangeListener =
Preference.OnPreferenceChangeListener { _, _ ->
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
return@OnPreferenceChangeListener true
}
MaterialAlertDialogBuilder(requireContext())
.setTitle(R.string.setting_notification_channels_dialog_title)
.setMessage(R.string.setting_notification_channels_dialog_message)
.setPositiveButton(android.R.string.ok, null)
.show()
true
}
} }
override fun onDisplayPreferenceDialog(preference: Preference) { override fun onDisplayPreferenceDialog(preference: Preference) {