【发布时间】:2014-05-30 16:07:43
【问题描述】:
有没有办法在 API11 中处理 OnPreferenceChangeListener。简单地调用 Preference.setOnPreferenceChangeListener 会引发一个 lint 错误,说明它需要 API14+,但是我的应用是为 API11+ 设计的,我不想进一步限制它可以运行的设备数量。
更新:我已经检查了开发文档,这应该可以从 API1 获得
编辑:代码
import android.os.Bundle;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.PreferenceActivity;
import android.preference.SwitchPreference;
@SuppressWarnings("deprecation")
public class SettingsActivity extends PreferenceActivity {
private static final String tag = "PREFERENCES";
SwitchPreference appPower;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences_layout);
setupPreferenceElements();
LogHelper.i(tag, "Preferences Activity Started");
}
private void setupPreferenceElements() {
appPower = (SwitchPreference) getPreferenceManager().findPreference(
"power");
appPower.setChecked(SettingsManager.getPower());
appPower.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference,
Object newValue) {
LogHelper.i(tag, "App Power Changed to " + newValue.toString());
SettingsManager.setPower(Boolean.parseBoolean(newValue
.toString()));
return true;
}
});
}
}
【问题讨论】:
-
我刚刚制作了一个测试应用程序(最小 API:8,目标:10,然后最小:13,目标:14)并且在任何一种情况下都没有问题。我们需要查看一些代码来进一步排除故障。
-
我可以给出导致问题的实际行。你还需要什么?
-
Em... 您的导入可能并且显然任何其他行在逻辑上与给出错误的行一起使用。但在我们走得太远之前,您使用的是什么 IDE?您是否尝试过“刷新”项目、“清理”代码并重新启动 IDE?有时将其关闭然后再次打开是解决方案。 =0p
-
我已经添加了我的代码。我正在使用 Eclipse。是的,尝试过干净,但没有用
-
认为我找到了问题,提交答案。
标签: android android-preferences android-settings