小编gho*_*ost的帖子

SwitchPreferences多次调用onPreferenceChange()方法

根据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)

所以这就是为什么我认为监听器被多次调用.如何处理或修复它?

android android-preferences android-fragments

5
推荐指数
2
解决办法
2554
查看次数