读取切换重新投资的当前值



我正在使用开关语句检查偏好的起源。

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是真的或false时返回。

您是否正在注册侦听器onResume

getPreferenceManager().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);

很难判断而不看到更多代码,例如,您是否扩展了PreferenceActivity

相关内容

  • 没有找到相关文章

最新更新