Я использую drawable для установки фона на кнопку переключения. Он отлично работает, когда я нахожусь в приложении и меняю любые условия, в зависимости от которых меняется фон моей кнопки переключения. Однако, если я завершаю работу приложения, используя переключатель приложений, фон становится прозрачным.
toggle_button_backgroun.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="false"
android:drawable="@android:color/transparent" />
<item android:state_checked="true"
android:drawable="@drawable/button_round_blue_enabled" />
</selector>
Функции:
private fun configureToggleButtons(button: ToggleButton?, text: String, selectedButtons: Map<String, Int>) {
button?.text = dayText.first().toString()
button?.textOff = dayText.first().toString()
button?.textOn = dayText.first().toString()
if (text in selectedButtons.keys) {
button?.isChecked = true
}
}
private fun setButtonListener(activity: FragmentActivity, button: ToggleButton?, text: String, num: Int) {
button?.setOnClickListener {
if (button.isChecked == true) selectedButtons.put(text, num) else selectedButtons.remove(text)
}
}
private fun updateBackground(button: ToggleButton?, activity: FragmentActivity) {
button?.background = if (!enabled) activity.getDrawable(R.drawable.button_round_blue_disabled) else activity.getDrawable(R.drawable.toggle_button_backgroun)
}
После возвращения в приложение в onStart моего фрагмента функции вызываются в следующем порядке: configureToggleButtons, setButtonListener и затем updateBackground. Таким образом, к тому времени, когда вызывается updateBackground, состояние кнопки устанавливается на флажок, поскольку оно находится в selectedButtons, но я не вижу правого фона button_round_blue_enabled, вместо этого вижу прозрачный.
Также мои слушатели перестают работать. setButtonListener не выполняется, если я нажимаю на кнопки. Это происходит только после завершения приложения. Переход в фоновый режим и возвращение работает нормально.
Что-нибудь еще, что мне нужно установить?