我希望在状态从开启更改为关闭时更改我的SwitchPreference中的图标(例如,用于启用通知声音),反之亦然。
这是我的SwitchPreference的代码:
<SwitchPreference
android:key="@string/pref_key_sound"
android:id="@+id/pref_key_sound"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:title="@string/pref_sound"
android:summaryOff="Off"
android:summaryOn ="On"
android:showText="true"
android:defaultValue="false"
android:icon="@mipmap/ic_volume"
/>
正如你在这里看到的,我只设置了一个固定的图标。
答案 0 :(得分:0)
我解决了这个问题。
在我的PreferenceActivity中,我注册了我的SharedPreferences来监听这样的更改:prefs.registerOnSharedPreferenceChangeListener
。
在onSharedPreferenceChanged
回调中,我刚刚检查了密钥是否与我的SwitchPreference
对应,如果是,我通过获取存储在{的布尔值来检查是否选中了密钥{1}}:
SharedPreferences
之后我获得了对SwitchPreference的引用:
boolean isOn = sharedPreferences.getBoolean(getString(R.string.pref_key_sound), true);
并且只是根据布尔值SwitchPreference switchPreference = (SwitchPreference) settingsFragment.findPreference("pref_key_sound");
更改了图标,因为每次按下开关时都会更新该值:
isOn
简单就是这样! :)希望很清楚!