SwitchPreference.isEnabled() 没有检测到 enabled/disabled 是否正确

SwitchPreference.isEnabled() not detecting if enabled/disabled properly

我正在尝试使用 SwitchPreference 并尝试使用 isEnabled() 方法检测它的状态。

这是代码(在 SettingsActivity.java 中):

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        getDelegate().installViewFactory();
        getDelegate().onCreate(savedInstanceState);
        super.onCreate(savedInstanceState);

        spChanged = new
                SharedPreferences.OnSharedPreferenceChangeListener() {
                    @Override
                    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
                                                          String key) {
                        // your stuff here
                        if (key.equals(KEY_ENABLE_F)) {
                            SwitchPreference fPref = (SwitchPreference) findPreference(key);
                            if (fPref.isEnabled()) {
                                Toast.makeText(getBaseContext(), "Enabled", Toast.LENGTH_SHORT).show();
                            } else {
                                Toast.makeText(getBaseContext(), "Disabled", Toast.LENGTH_SHORT).show();
                            }
                        }
                    }
                };
    }

    @Override
    protected void onResume() {
        super.onResume();
        getPreferenceScreen().getSharedPreferences()
                .registerOnSharedPreferenceChangeListener(spChanged);
    }

    @Override
    protected void onPause() {
        super.onPause();
        getPreferenceScreen().getSharedPreferences()
                .unregisterOnSharedPreferenceChangeListener(spChanged);
    }

问题是无论切换到 'ON' 还是 'OFF',带有文本 "Enabled" 的 Toast 都会显示。

这里可能有什么问题?

糟糕!我应该在发布问题之前尝试过。无论如何,我通过更改解决了这个问题:

fPref.isEnabled()

对此:

fPref.isChecked()