0

我正在尝试使用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);
    }

问题是,Toast无论开关是“开”还是“关”,都会显示带有“已启用”的文本。

这里有什么问题?

4

1 回答 1

1

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

fPref.isEnabled()

对此:

fPref.isChecked()
于 2017-08-13T11:19:42.330 回答