我知道有很多關於使用保存實例狀態的文檔,但我對如何爲我的情況實現它感到困惑。我使用自定義按鈕爲自己的活動定製了自定義操作欄,可將您帶到上一頁和下一頁。當我通過這些按鈕進行導航時,我希望能夠保存所有複選框的狀態。我90%確定我做錯了,我想知道考慮到我使用的線路數量是否有更好的方法。此代碼是我的第一個活動,當我點擊我的自定義下一個按鈕,然後前面的按鈕,返回到它,它不是節能狀態:使用saveinstancestate保存很多複選框狀態
boolean bPrearrival_1, bPrearrival_2, bPrearrival_3, bPrearrival_4, bPrearrival_5,
bPrearrival_6, bPrearrival_7, bPrearrival_8, bPrearrival_9, bPrearrival_10,
bPrearrival_11, bPrearrival_12;
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
savedInstanceState.putBoolean("prearrival_1", checkboxList.get(0).isChecked());
savedInstanceState.putBoolean("prearrival_2", checkboxList.get(1).isChecked());
savedInstanceState.putBoolean("prearrival_3", checkboxList.get(2).isChecked());
savedInstanceState.putBoolean("prearrival_4", checkboxList.get(3).isChecked());
savedInstanceState.putBoolean("prearrival_5", checkboxList.get(4).isChecked());
savedInstanceState.putBoolean("prearrival_6", checkboxList.get(5).isChecked());
savedInstanceState.putBoolean("prearrival_7", checkboxList.get(6).isChecked());
savedInstanceState.putBoolean("prearrival_8", checkboxList.get(7).isChecked());
savedInstanceState.putBoolean("prearrival_9", checkboxList.get(8).isChecked());
savedInstanceState.putBoolean("prearrival_10", checkboxList.get(9).isChecked());
savedInstanceState.putBoolean("prearrival_11", checkboxList.get(10).isChecked());
savedInstanceState.putBoolean("prearrival_12", checkboxList.get(11).isChecked());
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
bPrearrival_1 = savedInstanceState.getBoolean("prearrival_1");
bPrearrival_2 = savedInstanceState.getBoolean("prearrival_2");
bPrearrival_3 = savedInstanceState.getBoolean("prearrival_3");
bPrearrival_4 = savedInstanceState.getBoolean("prearrival_4");
bPrearrival_5 = savedInstanceState.getBoolean("prearrival_5");
bPrearrival_6 = savedInstanceState.getBoolean("prearrival_6");
bPrearrival_7 = savedInstanceState.getBoolean("prearrival_7");
bPrearrival_8 = savedInstanceState.getBoolean("prearrival_8");
bPrearrival_9 = savedInstanceState.getBoolean("prearrival_9");
bPrearrival_10 = savedInstanceState.getBoolean("prearrival_10");
bPrearrival_11 = savedInstanceState.getBoolean("prearrival_11");
bPrearrival_12 = savedInstanceState.getBoolean("prearrival_12");
}
@Override
protected void onResume() {
super.onResume();
checkboxList.get(0).setChecked(bPrearrival_1);
checkboxList.get(1).setChecked(bPrearrival_2);
checkboxList.get(2).setChecked(bPrearrival_3);
checkboxList.get(3).setChecked(bPrearrival_4);
checkboxList.get(4).setChecked(bPrearrival_5);
checkboxList.get(5).setChecked(bPrearrival_6);
checkboxList.get(6).setChecked(bPrearrival_7);
checkboxList.get(7).setChecked(bPrearrival_8);
checkboxList.get(8).setChecked(bPrearrival_9);
checkboxList.get(9).setChecked(bPrearrival_10);
checkboxList.get(10).setChecked(bPrearrival_11);
checkboxList.get(11).setChecked(bPrearrival_12);
}
savedInstanceState不是SharedPreference。 –
@hegazy Oops hm,好像我的意思是使用savedInstanceState而不是SharedPreference來編寫。我也不太瞭解,你知道什麼是解決我的問題的最好方法嗎? – Brejuro