Frage an android, checkbox – Status des Kontrollkästchens speichern

4

Ich bin sehr neu und würde mich freuen, wenn jemand den Code demonstrieren könnte, der zum Speichern einer Reihe von Kontrollkästchenzuständen in Java in einer Android-Anwendung erforderlich ist.

Angenommen, ich habe eine Liste von Tools (zehn oder mehr), die ein Benutzer benötigt, um eine Aufgabe abzuschließen, und möchte, dass sie jedes einzelne abhaken und die Daten (in der App, nicht in SQLite) speichern können, damit sie aufgezeichnet werden, wenn Sie kehren zur Anwendung zurück.

Ich habe eine Vorstellung davon, wie das gemacht wird, habe aber das Gefühl, dass ich den Code sehen muss, um ihn richtig zu verstehen.

<code>import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.widget.CheckBox;

public class CheckBoxTest extends Activity{

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.checkboxtest);
    CheckBox cb1,cb2,cb3,cb4;

    cb1 = (CheckBox)findViewById(R.id.checkBox1);
    cb2 = (CheckBox)findViewById(R.id.checkBox2);
    cb3 = (CheckBox)findViewById(R.id.checkBox3);
    cb4 = (CheckBox)findViewById(R.id.checkBox4);   
     }
 }
</code>
löste Ihr Problem Shankar Agarwal

Deine Antwort

2   die antwort
11

um die Daten in SharedPreference zu speichern und abzurufen. Sie speichern jeden Kontrollkästchenstatus in SharedPreference

// Wert von SharedPreference abrufen

<code>SharedPreferences preferences = getApplicationContext().getSharedPreferences("PROJECT_NAME", android.content.Context.MODE_PRIVATE);
boolean value = preferences.getBoolean("KEY", false);
String value = preferences.getString("KEY");
</code>

// Wert in SharedPreference speichern

<code>SharedPreferences preferences = getApplicationContext().getSharedPreferences("PROJECT_NAME", android.content.Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("KEY", value);
editor.putBoolean("KEY", value);
editor.commit();
</code>

schau dir ein paar kleine Änderungen an ::::

<code>public class CheckBoxTest extends Activity implements OnCheckedChangeListener {

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            setContentView(R.layout.favorites_add_button);
            CheckBox cb1,cb2,cb3,cb4;

            cb1 = (CheckBox)findViewById(R.id.checkBox1);
            cb1.setChecked(getFromSP("cb1"));
            cb1.setOnCheckedChangeListener(this);
            cb2 = (CheckBox)findViewById(R.id.checkBox2);
            cb2.setChecked(getFromSP("cb2"));
            cb2.setOnCheckedChangeListener(this);
            cb3 = (CheckBox)findViewById(R.id.checkBox3);
            cb3.setChecked(getFromSP("cb3"));
            cb3.setOnCheckedChangeListener(this);
            cb4 = (CheckBox)findViewById(R.id.checkBox4);
            cb4.setChecked(getFromSP("cb4"));
            cb4.setOnCheckedChangeListener(this);

        }
        private boolean getFromSP(String key){
        SharedPreferences preferences = getApplicationContext().getSharedPreferences("PROJECT_NAME", android.content.Context.MODE_PRIVATE);
        return preferences.getBoolean(key, false);
        }
        private void saveInSp(String key,boolean value){
        SharedPreferences preferences = getApplicationContext().getSharedPreferences("PROJECT_NAME", android.content.Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = preferences.edit();
        editor.putBoolean(key, value);
        editor.commit();
        }
        @Override
        public void onCheckedChanged(CompoundButton buttonView,
                boolean isChecked) {
            // TODO Auto-generated method stub
            switch(buttonView.getId()){
            case R.id.checkBox1:
            saveInSp("cb1",isChecked);
            break;
            case R.id.checkBox2:
            saveInSp("cb2",isChecked);
            break;

            case R.id.checkBox3:
            saveInSp("cb3",isChecked);
            break;

            case R.id.checkBox4:
            saveInSp("cb4",isChecked);
            break;
            }

        }
        }
</code>
Brilliant, vielen Dank für Ihre Hilfe und Geduld. Es bleibt noch viel zu lernen, aber das war eine große Hilfe für mich, jetzt kann ich sehen, was los ist. DarkLion
0

ich habe das oben genannte versucht, aber nach dem Neustart oder Neustart meines Android-Geräts würde ich den aktivierten Status des Optionsmenüs verlieren. Ich würde sagen, um das Problem zu lösen:

Sie haben 2 Möglichkeiten:

Geteilter Präferenzwert während des Lebenszyklus der Aktivität.

Anruf.clear Vor.commit

Siehe meine Antwort:

Android Persistent Checkable Menu im benutzerdefinierten Widget nach dem Neustart von Android

Verwandte Fragen