Je suis confus au sujet de ce qui se passe dans le code suivant. C'est en train de faire ce que je veux mais je pensais que je devrais faire plus de travail. Dans la méthode onCreate, les cases à cocher conservent leur état coché ou non coché d'une exécution précédente même après que j'ai forcé la fermeture de l'application. Il enregistre leur état même si le message Log "onCreate found" n'est jamais imprimé et que le message "add account" est imprimé et que cbp2.setChecked (false) semble être ignoré.préférence dynamique checkbox puzzle
Que se passe-t-il?
public class SettingsActivity extends PreferenceActivity {
private final static String LOGTAG = "SettingsActivity";
@Override
@SuppressWarnings("deprecation")
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Load preference data from 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) this
.findPreference("key_accounts");
for (String account : accounts) {
final CheckBoxPreference cbp = (CheckBoxPreference) this
.findPreference("key_" + account);
if (cbp != null) {
Log.d(SettingsActivity.LOGTAG, "onCreate found: " + account
+ (cbp.isChecked() ? ", checked" : ""));
continue;
}
Log.d(SettingsActivity.LOGTAG, "adding account " + account);
final CheckBoxPreference cbp2 = new CheckBoxPreference(this);
// make sure each key is unique
cbp2.setKey("key_" + account);
cbp2.setTitle(account);
cbp2.setChecked(false);
cat.addPreference(cbp2);
}
}
}
est ici le haut de mes préférences xml:
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory
android:key = "key_accounts"
android:title = "@string/title_accounts">
</PreferenceCategory>
Ok, merci. J'ai ajouté le début de mon fichier xml de préférences à la question. – lumpynose
Bien que je suis toujours confus quant à pourquoi le débogage "trouvé" n'a pas été imprimé. – lumpynose