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