根据Android指南,我正在尝试使用Preference Fragments实现首选项.在preferences.xml我声明:
<SwitchPreference
android:key="enable_wifi"
android:title="Enable WiFi"
/>
Run Code Online (Sandbox Code Playgroud)
而且在课堂上thah在onCreate方法中扩展了PreferenceFragment,我做了:
public class FragmentSettings extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
mEnableWifi = (SwitchPreference) findPreference(enable_wifi);
mEnableWiFi.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
Log.i(getClass().getName(), preference.getKey()
+ String.valueOf(newValue));
}
}
Run Code Online (Sandbox Code Playgroud)
因此,当我登录SwitchPreferene或Switch内部日志显示时,我得到了
enable_wifi false
enable_wifi false
enable_wifi true
enable_wifi true
Run Code Online (Sandbox Code Playgroud)
所以这就是为什么我认为监听器被多次调用.如何处理或修复它?