J'essaie de sauvegarder l'état des cases à cocher et les cases à cocher ont 3 états vérifiés (rouge, jaune, vert) dans un fragment. J'essaie les préférences partagées, mais cela ne permet pas d'économiser dans l'application, même lorsque j'utilise différents onglets. J'ai 4 fragments qui vont de fragment en fragment et se termine avec le 4ème fragment avec les cases à cocher. Vous pouvez revenir au 3ème fragment avec un bouton. Je dois pouvoir cocher les cases si elles sont rouges, jaunes ou vertes, et quand l'utilisateur va n'importe où dans l'application, quand il revient à la liste de contrôle, la case à cocher sera rouge, jaune ou verte selon combien de fois la case à cocher. Il semble ne rien sauver, et il semble être réinitialiser quand je vais à d'autres endroits dans l'application. Voici mon code:Android - Enregistrer l'état des cases à cocher ne fonctionne pas sharedpreferences
public class CheckListGatherFragment extends Fragment{
private CheckBox chkStart;
private int countStart;
private int start;
private SharedPreferences mSharedPreferences;
private SharedPreferences.Editor editor;
private Button btnGoBackToCheck;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final View rootView = inflater.inflate(R.layout.fragment_checklist_gather, container, false);
chkStart = (CheckBox) rootView.findViewById(R.id.chkStart);
btnGoBackToCheck = (Button) rootView.findViewById(R.id.btnGoBackToChecklist);
mSharedPreferences = CheckListGatherFragment.this.getActivity().getSharedPreferences("preferences_key", Context.MODE_PRIVATE);
editor = mSharedPreferences.edit();
setOnClick();
return rootView;
}
public void setOnClick() {
btnGoBackToCheck.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getFragmentManager().beginTransaction().replace(R.id.fragment_checklist_gather, new CheckListScreenMainFragment()).addToBackStack("Gather").commit();
}
});
chkStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
countStart = checked(chkStart, countStart);
editor.putInt("checkStartId", countStart);
editor.apply();
}
});
}
public int checked(CheckBox checkBox, int count){
if (checkBox.isChecked()){
count++;
} else if (!checkBox.isChecked()){
checkBox.setChecked(true);
count++;
}
if (count == 1){
checkBox.setButtonDrawable(R.drawable.custom_yellow_checkbox);
}
if (count == 2){
checkBox.setButtonDrawable(R.drawable.custom_green_checkbox);
}
if (count > 2){
count = 0;
checkBox.setButtonDrawable(R.drawable.custom_red_checkbox);
}
return count;
}
@Override
public void onResume() {
super.onResume();
start = mSharedPreferences.getInt("CheckStartId", 0);
if (start == 0){
chkStart.setButtonDrawable(R.drawable.custom_red_checkbox);
}if (start == 1){
chkStart.setButtonDrawable(R.drawable.custom_yellow_checkbox);
}if (start == 2){
chkStart.setButtonDrawable(R.drawable.custom_green_checkbox);
}
}
}
Toute aide serait grandement appréciée. Merci!
Merci beaucoup! C'est ce que j'ai fait! – Karna