我正在使用switch语句来检查首选项的来源。
public class SettingsActivity extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Display the fragment as the main content.
getFragmentManager().beginTransaction()
.replace(android.R.id.content, new SettingsFragment())
.commit();
PreferenceManager.setDefaultValues(this, R.xml.preferences, false);
getFragmentManager().beginTransaction().replace(android.R.id.content,
new SettingsFragment()).commit();
}
public static class SettingsFragment extends PreferenceFragment implements SharedPreferences.OnSharedPreferenceChangeListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
Preference pref = findPreference(key);
switch(key) {
case "key_video_quality":
Log.i("Tag1", "Video quality button pressed");
break;
case "key_video_length":
Log.i("Tag2", "Video length button pressed");
break;
case "key_auto_save":
Log.i("Tag3", "Auto save button pressed");
break;
case "key_dark_mode":
Log.i("Tag4", "Dark mode button pressed");
break;
}
}
}
key_auto_save
永远不会触发,而且key_dark_mode
两者都是SwitchPreferences
。
是否有一种方法可以在按下时检查开关首选项的当前值,以便我可以决定是否为我的应用程序打开/关闭深色主题?由于我将其用作一般设备,因此Preference
我认为isChecked()
这里并不适用。
另外,我不确定这个key_auto_save
问题,关键是正确的。
在我的onSharedPreferenceChanged
方法中,case "key_dark_mode":
我曾经sharedPreferences.getBoolean(key, false);
返回过我switchPreference
是对还是错。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句