我已经拿起了别人的代码,并且终于能够让它工作了!现在,我正在处理我的应用的PreferencesActivity
。根据他的代码,另一个人在onSharedPreferenceChangeListener
中设置onResume()
并将onPause()
中的 protected void onResume(){
super.onResume();
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
}
@Override
protected void onPause(){
super.onPause();
getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
}
移除,如下所示:
NullPointerException
它产生错误PreferenceFragment
并且它也被弃用了。我会将它与我的move_uploaded_file($_FILES['fileToUpload']['name'], $target_dir);
一起使用,但我想知道为什么这个代码在那里,它可能是什么用途以及如何修复它并让它工作。
答案 0 :(得分:0)
似乎问题是由使用自定义类(仅理论)引起的。匿名使用代码中的接口(而不是在主类中实现它)似乎解决了这个问题。
SharedPreferences.OnSharedPreferenceChangeListener prefListener =
new SharedPreferences.OnSharedPreferenceChangeListener() {
public void onSharedPreferenceChanged(SharedPreferences prefs,
String key) {
if (key.equals("date")) {
}
}
};
preferences.registerOnSharedPreferenceChangeListener(prefListener);
请注意:重要的是pref listener变量是一个类字段而不是局部变量,以防它被垃圾收集。
(Source部分答案)