SwitchPreference.isEnabled()未检测是否正确启用/禁用

时间:2017-08-13 10:50:12

标签: android sharedpreferences android-preferences preferenceactivity switchpreference

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

这里有什么问题?

1 个答案:

答案 0 :(得分:1)

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

fPref.isEnabled()

到此:

fPref.isChecked()