У меня есть этот CheckBoxPreference в моем коде. Я применил onSharedPreferenceChanged() в своем коде для выполнения некоторых действий. Проблема в том, что, когда я нажимаю на настройку флажка, функция вызывается в цикле с одинаковым значением. Кто-нибудь может мне с этим помочь?Android CheckBoxPreference java.lang.StackOverflowError
Вот соответствующие фрагменты кода:
onSharedPreferenceChanged() раздел в привилегированной деятельности:
if(key.equals(LOCATION_UPDATE_KEY)) {
boolean update = sharedPreferences.getBoolean(LOCATION_UPDATE_KEY, false);
Log.v("preferences", update + "");
editor.putBoolean(LOCATION_UPDATE_KEY, update);
editor.commit();
}
XML раздел предпочтения на данный вид деятельности:
<PreferenceCategory
android:title="Location">
<CheckBoxPreference
android:title="Track Location"
android:defaultValue="false"
android:summary="Keep track of handset location (Consumes Battery)"
android:key="track_option" />
<ListPreference
android:title="Location Update Source"
android:summary=""
android:key="track_source"
android:defaultValue="2"
android:entries="@array/location_sources"
android:entryValues="@array/location_sources_values"
android:dependency="track_option" />
<ListPreference
android:title="Location Update Interval"
android:summary=""
android:key="track_interval"
android:defaultValue="2"
android:entries="@array/location_update_interval"
android:entryValues="@array/location_update_interval_values"
android:dependency="track_option" />
</PreferenceCategory>
Я не понимаю. означает ли это, что editor.commit() вызывает цикл? – skaur
Точно. 'Editor.commit()' снова вызовет ваш 'onSharedPreferenceChanged()' снова, как только он изменит предпочтение. – zapl
спасибо за помощь !! просто еще одно сомнение. dont нам нужно зафиксировать изменения checkboxpreference, как в других случаях? (я прошу прощения, если это звучит глупо, но я впервые использовал настройки) – skaur