0

SwitchPreference状態に応じてアイコンを変更しようとしています。SwitchPreferenceがオンの場合、アイコン セットを@drawable/ic_notifications_activeにしたいが、オフの場合、アイコン セットを にしたい@drawable/ic_notifications_off

これは私のPreferenceScreenxmlファイルにあるものです:

<SwitchPreference
    android:icon="@drawable/ic_notifications_active"
    android:key="notifications_switch_preference"
    android:defaultValue="true"
    app:title="Receive Notifications" />

そして、これは私のデザインタブでどのように見えるかです:

SwitchPreference の Android デザイン タブ

SettingsActivityの には、 への変更を検出するための次のコード セットがありますSwitchPreference

notificationsPreference?.onPreferenceChangeListener =
    Preference.OnPreferenceChangeListener { preference, newValue ->
        val switched: Boolean = (preference as SwitchPreference)
            .isChecked
        if (switched) {
            if (notificationsPreference != null) {
                notificationsPreference.icon = resources.getDrawable(R.drawable.ic_notifications_active)
            }
        } else {
            if (notificationsPreference != null) {
                notificationsPreference.icon = resources.getDrawable(R.drawable.ic_notifications_off)
            }
        }
        true
    }

問題は、アプリを実行SwitchPreferenceして初めてトグルをクリックすると、アイコンの色が白に変わりますが、実際のアイコンには変わりません。もう一度クリックすると、アイコンが変わりますが、まだ白で、デフォルトのグレーではありません。間違った状態に対して間違ったアイコンが表示されるようになりました。

これは、オン状態とオフ状態の両方で次のようになります。

設定を切り替える SwitchPreference オフ

ユーザーがトグルをクリックすると、正しいアイコンに変わり、色が変わらないようにするにはどうすればよいですか。また、2回目ではなく、最初の試行で動作するようにしたい.

4

1 に答える 1