Checkbox-Status mit Shared Preferences speichern und zählen wieviele aktiviert sind.

T

TimWeiland

Neues Mitglied
1
Hallo zusammen,
Ich habe folgendes Problem: Ich habe 12 Checkboxen in meinem Layout. Ich möchte das sowohl der Checkbox-Stats gespeichert wird, als auch, dass die aktivierten Checkboxen gezählt werden. Bislang habe ich das folgendermaßen gelöst:
Code:
    public void onCheckboxClicked(View view) {

        boolean checked = ((CheckBox) view).isChecked();

if (checked) {
                switch(view.getId()) {
                    case R.id.checkBox4:
                        PreferenceManager.getDefaultSharedPreferences(this).edit()
                                .putBoolean("checkBox1", checked).commit();
                        cCounter++;
                        textView7.setText(Integer.toString(cCounter));


                }
}else {
    checkBox4.setChecked(false);
    cCounter=0;
    textView7.setText(Integer.toString(cCounter));
}
}}

Dabei taucht das Problem auf, dass die Checkbox immer aktiviert ist. Also auch, wenn ich den Haken als User entferne.
Lasse ich den Code ab }else{ weg, funktioniert es mit dem Checkbox-Status wunderbar. Allerdings zählt der Zähler dann natürlich auch rauf, wenn man die Checkbox deaktiviert.
Ich wäre über jede Hilfe sehr dankbar!
 
Hallo den counter auf 0 zu setzen wenn du die Box deactivirst ist ja auch nicht sinnvoll. Da müsstest du schon eins vom Counter abziehen als ihn zu löschen.
Da du den Status ja in den pref speicherst kannst du auch erstmal prüfen wie der Status vor dem klick war.
Dazu würde ich auch den Status speichen wenn deaktiviert. Und beim Aufruf der App auch abfragen und den Staus wider herstellen.

Das setChecked macht man nicht in dem Klicklistener. Ist ja auch Sinnlos du als User hast es ja schon deaktiviert. Und fragst ja genau zu diesem Zeitpunkt den Status ab.
 
Zuletzt bearbeitet:
Hallo, ja schon klar das es Müll war. Aber trotzdem vielen Dank für die ehrlichen Worte :). Was mir fehlt ist es beim Start der Activity den Checkbox-Status abzufragen. Eventuell bist du ja so nett und kannst mir einen Tipp geben, wo ich so etwas nachlesen kann. Ich denke es liegt spätestens jetzt auf der Hand, dass ich ein Anfänger bin. :D Ich wäre für weitere Hilfe sehr dankbar!
 
Hallo eigentlich hast du schon alles was du dazu brauchst.
In der onCrate holst du dir bestimmt die Instanzen der checkboxen mit findviewbyId.
Da nach solltest du deine prefs abfragen.
Dir also den gespeicherten Zustand der Box holen und ihn dann genauso setzen.
Also die Instanz die du mit findviewbyId bekommen hast und den Zustand true oder false mit setChecked setzen.
Dies machst du mit oder für jede deiner checkboxen.

Wenn du bei jeder Änderung des Zustandes den Zustand auch in den prefs speicherst hast du immer den aktuellen Zustand in den prefs.

Wenn du hier auch gleich deinen counter setzt wenn du ein true von den prefs bekommst stimmt auch der.

Die onCreate wird ja nur beim app start durchlaufen. Also wenn der User zur Laufzeit was ändert solltest du den counter auch entsprechend erhöhen oder erniedrigen im listener. Und nicht einfach auf 0 setzen. Natürlich den Zustand dann auch in den pref speichen.

Die android eigenen Methoden dafür kennst du schon, mit Java Grundkenntnissen sollte dir das möglich sein. Selber zu schreiben.
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: TimWeiland

Ähnliche Themen

koje71
Antworten
0
Aufrufe
92
koje71
koje71
T
Antworten
2
Aufrufe
1.115
jogimuc
J
F
Antworten
1
Aufrufe
2.269
jogimuc
J
Zurück
Oben Unten