android - dynamic preference checkbox puzzle -
i'm confused what's happening in next code. it's doing want thought i'd have more work. in oncreate method checkboxes retaining checked or unchecked state previous run after forcefulness quit app. it's saving state though log message "oncreate found" never printed , "adding account" message printed , cbp2.setchecked(false) seems ignored.
what's going on?
public class settingsactivity extends preferenceactivity { private final static string logtag = "settingsactivity"; @override @suppresswarnings("deprecation") public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); // load preference info xml this.addpreferencesfromresource(r.xml.preferences_settings); set<string> accounts = new hashset<string>(); if (build.version.sdk_int >= build.version_codes.eclair) { accounts = accounts.getaccounts(this); } final preferencecategory cat = (preferencecategory) .findpreference("key_accounts"); (string business relationship : accounts) { final checkboxpreference cbp = (checkboxpreference) .findpreference("key_" + account); if (cbp != null) { log.d(settingsactivity.logtag, "oncreate found: " + business relationship + (cbp.ischecked() ? ", checked" : "")); continue; } log.d(settingsactivity.logtag, "adding business relationship " + account); final checkboxpreference cbp2 = new checkboxpreference(this); // create sure each key unique cbp2.setkey("key_" + account); cbp2.settitle(account); cbp2.setchecked(false); cat.addpreference(cbp2); } } }
here's top of preferences xml:
<preferencescreen xmlns:android="http://schemas.android.com/apk/res/android"> <preferencecategory android:key = "key_accounts" android:title = "@string/title_accounts"> </preferencecategory>
it depends how defined preference xml. saves setting in sharedpreferences , hence every alter promptly written sharedprefs , hence persistent.
android dynamic preferences preferenceactivity checkboxpreference
No comments:
Post a Comment