要在用户重新启动应用程序时保持多个复选框的选中状态,可以使用SharedPreferences存储选中状态,并在应用程序重新启动时恢复这些状态。下面是一个示例代码:
首先,在你的Activity类中定义一个SharedPreferences对象和一个用于保存选中状态的HashMap:
private SharedPreferences sharedPreferences;
private HashMap checkboxStates;
然后,在onCreate方法中初始化SharedPreferences和checkboxStates对象:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sharedPreferences = getSharedPreferences("checkbox_states", MODE_PRIVATE);
checkboxStates = new HashMap<>();
}
接下来,在每次复选框的状态发生改变时,更新checkboxStates对象,并保存到SharedPreferences中:
checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
checkboxStates.put("checkbox1", isChecked);
saveCheckboxStates();
}
});
在保存checkboxStates对象的方法中,将checkboxStates对象转换为JSON字符串,并保存到SharedPreferences中:
private void saveCheckboxStates() {
SharedPreferences.Editor editor = sharedPreferences.edit();
Gson gson = new Gson();
String json = gson.toJson(checkboxStates);
editor.putString("checkbox_states", json);
editor.apply();
}
最后,在onResume方法中恢复复选框的选中状态。首先从SharedPreferences中获取保存的JSON字符串,然后将其转换为checkboxStates对象:
@Override
protected void onResume() {
super.onResume();
String json = sharedPreferences.getString("checkbox_states", "");
Gson gson = new Gson();
checkboxStates = gson.fromJson(json, new TypeToken>(){}.getType());
// 恢复复选框的选中状态
checkbox.setChecked(checkboxStates.get("checkbox1"));
}
通过这个示例代码,你可以在用户重新启动应用程序时保持多个复选框的选中状态。只需将相应的复选框ID和状态放入checkboxStates对象中,并在需要的地方调用saveCheckboxStates方法保存状态,以及在onResume方法中恢复状态即可。