0
我很困惑以下代碼中發生了什麼。它實際上正在做我想做的事,但我認爲我必須做更多的工作。在onCreate方法中,即使在強制退出應用程序後,複選框仍保留上次運行時的選中狀態或未選中狀態。即使日誌消息「onCreate found」從未打印,並且「添加帳戶」消息被打印,並且cbp2.setChecked(false)似乎被忽略,它仍在保存它們的狀態。動態偏好複選框拼圖
發生了什麼事?
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);
}
}
}
這裏是我的喜好XML的頂部:
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory
android:key = "key_accounts"
android:title = "@string/title_accounts">
</PreferenceCategory>
好的,謝謝。我在問題中添加了我的首選項xml文件的開始。 – lumpynose 2013-02-15 20:09:50
雖然我仍然困惑,爲什麼「找到」調試沒有打印。 – lumpynose 2013-02-15 20:15:16