Android - Wie speichert man den Zustand einer CheckBox
Ich habe eine Anwendung mit Checkboxen, Wie kann ich Sie retten?
Mein layout ist:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:id="@+id/list_linear"
android:layout_width="fill_parent" android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<ScrollView android:id="@+id/ScrollView01"
android:layout_width="fill_parent"
android:layout_height="match_parent">
<TableLayout
android:id="@+id/tableLayout1"
android:layout_height="match_parent"
android:layout_width="wrap_content">
<CheckBox android:textSize="30sp" android:background="@drawable/checkbox_background" android:button="@drawable/checkbox" android:text="Ontbijtkoek" android:id="@+id/checkBox1" android:layout_width="wrap_content" android:layout_height="wrap_content"></CheckBox>
<CheckBox android:textSize="30sp" android:background="@drawable/checkbox_background" android:button="@drawable/checkbox" android:text="Koekrepen" android:id="@+id/checkBox70" android:layout_width="wrap_content" android:layout_height="wrap_content"></CheckBox>
<CheckBox android:textSize="30sp" android:background="@drawable/checkbox_background" android:button="@drawable/checkbox" android:text="Beschuit" android:id="@+id/checkBox69" android:layout_width="wrap_content" android:layout_height="wrap_content"></CheckBox>
<CheckBox android:textSize="30sp" android:background="@drawable/checkbox_background" android:button="@drawable/checkbox" android:text="Chocolade" android:id="@+id/checkBox68" android:layout_width="wrap_content" android:layout_height="wrap_content"></CheckBox>
<CheckBox android:textSize="30sp" android:background="@drawable/checkbox_background" android:button="@drawable/checkbox" android:text="Koekjes" android:id="@+id/checkBox67" android:layout_width="wrap_content" android:layout_height="wrap_content"></CheckBox>
<CheckBox android:textSize="30sp" android:background="@drawable/checkbox_background" android:button="@drawable/checkbox" android:text="Brood" android:id="@+id/checkBox66" android:layout_width="wrap_content" android:layout_height="wrap_content"></CheckBox>
<CheckBox android:textSize="30sp" android:background="@drawable/checkbox_background" android:button="@drawable/checkbox" android:text="Hagelslag puur" android:id="@+id/checkBox65" android:layout_width="wrap_content" android:layout_height="wrap_content"></CheckBox>
<CheckBox android:textSize="30sp" android:background="@drawable/checkbox_background" android:button="@drawable/checkbox" android:text="Hagelslag mix" android:id="@+id/checkBox64" android:layout_width="wrap_content" android:layout_height="wrap_content"></CheckBox>
<CheckBox android:textSize="30sp" android:background="@drawable/checkbox_background" android:button="@drawable/checkbox" android:text="Pindakaas" android:id="@+id/checkBox63" android:layout_width="wrap_content" android:layout_height="wrap_content"></CheckBox>
<CheckBox android:textSize="30sp" android:background="@drawable/checkbox_background" android:button="@drawable/checkbox" android:text="Pasta" android:id="@+id/checkBox62" android:layout_width="wrap_content" android:layout_height="wrap_content"></CheckBox>
<CheckBox android:textSize="30sp" android:background="@drawable/checkbox_background" android:button="@drawable/checkbox" android:text="Jam" android:id="@+id/checkBox61" android:layout_width="wrap_content" android:layout_height="wrap_content"></CheckBox>
<CheckBox android:textSize="30sp" android:background="@drawable/checkbox_background" android:button="@drawable/checkbox" android:text="Thee" android:id="@+id/checkBox60" android:layout_width="wrap_content" android:layout_height="wrap_content"></CheckBox>
<CheckBox android:textSize="30sp" android:background="@drawable/checkbox_background" android:button="@drawable/checkbox" android:text="Boter" android:id="@+id/checkBox59" android:layout_width="wrap_content" android:layout_height="wrap_content"></CheckBox>
<CheckBox android:textSize="30sp" android:background="@drawable/checkbox_background" android:button="@drawable/checkbox" android:text="Smeerkaas" android:id="@+id/checkBox58" android:layout_width="wrap_content" android:layout_height="wrap_content"></CheckBox>
<CheckBox android:textSize="30sp" android:background="@drawable/checkbox_background" android:button="@drawable/checkbox" android:text="Suiker" android:id="@+id/checkBox57" android:layout_width="wrap_content" android:layout_height="wrap_content"></CheckBox>
<CheckBox android:textSize="30sp" android:background="@drawable/checkbox_background" android:button="@drawable/checkbox" android:text="Groente" android:id="@+id/checkBox56" android:layout_width="wrap_content" android:layout_height="wrap_content"></CheckBox>
<CheckBox android:textSize="30sp" android:background="@drawable/checkbox_background" android:button="@drawable/checkbox" android:text="Fruit" android:id="@+id/checkBox55" android:layout_width="wrap_content" android:layout_height="wrap_content"></CheckBox>
<CheckBox android:textSize="30sp" android:background="@drawable/checkbox_background" android:button="@drawable/checkbox" android:text="Aardappeltjes" android:id="@+id/checkBox54" android:layout_width="wrap_content" android:layout_height="wrap_content"></CheckBox>
<CheckBox android:textSize="30sp" android:background="@drawable/checkbox_background" android:button="@drawable/checkbox" android:text="Zoutjes" android:id="@+id/checkBox53" android:layout_width="wrap_content" android:layout_height="wrap_content"></CheckBox>
<CheckBox android:textSize="30sp" android:background="@drawable/checkbox_background" android:button="@drawable/checkbox" android:text="Sapjes" android:id="@+id/checkBox52" android:layout_width="wrap_content" android:layout_height="wrap_content"></CheckBox>
</TableLayout>
</ScrollView>
</LinearLayout>
(Ja, ich jetzt, die sind viel Checkboxen)
Und meine main.class ist:
package com.boodschappen;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.graphics.Typeface;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.WindowManager;
import android.widget.CheckBox;
import android.widget.TextView;
public class main extends Activity {
@Override
public void onBackPressed() {
showDialog(MENU_EXIT);
super.onBackPressed();
}
private static final int MENU_SAVE = 0;
private static final int MENU_DIALOG = 2;
private static final int MENU_EXIT = 3;
private static final int MENU_LOAD = 1;
CheckBox een, v52, v53, v54, v55, v56, v57, v58, v59, z60, z61, z62, z63, z64, z65, z66, z67, z68, z69, z70 ;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
setContentView(R.layout.list);
Typeface fontFace = Typeface.createFromAsset(getAssets(), "fonts/ankehand.ttf");
TextView someText1 = (TextView)findViewById(R.id.checkBox1);
TextView someText52 = (TextView)findViewById(R.id.checkBox52);
TextView someText53 = (TextView)findViewById(R.id.checkBox53);
TextView someText54 = (TextView)findViewById(R.id.checkBox54);
TextView someText55 = (TextView)findViewById(R.id.checkBox55);
TextView someText56 = (TextView)findViewById(R.id.checkBox56);
TextView someText57 = (TextView)findViewById(R.id.checkBox57);
TextView someText58 = (TextView)findViewById(R.id.checkBox58);
TextView someText59 = (TextView)findViewById(R.id.checkBox59);
TextView someText60 = (TextView)findViewById(R.id.checkBox60);
TextView someText61 = (TextView)findViewById(R.id.checkBox61);
TextView someText62 = (TextView)findViewById(R.id.checkBox62);
TextView someText63 = (TextView)findViewById(R.id.checkBox63);
TextView someText64 = (TextView)findViewById(R.id.checkBox64);
TextView someText65 = (TextView)findViewById(R.id.checkBox65);
TextView someText66 = (TextView)findViewById(R.id.checkBox66);
TextView someText67 = (TextView)findViewById(R.id.checkBox67);
TextView someText68 = (TextView)findViewById(R.id.checkBox68);
TextView someText69 = (TextView)findViewById(R.id.checkBox69);
TextView someText70 = (TextView)findViewById(R.id.checkBox70);
someText1.setTypeface(fontFace); //only typeface
someText52.setTypeface(fontFace); //only typeface
someText53.setTypeface(fontFace); //only typeface
someText54.setTypeface(fontFace); //only typeface
someText55.setTypeface(fontFace); //only typeface
someText56.setTypeface(fontFace); //only typeface
someText57.setTypeface(fontFace); //only typeface
someText58.setTypeface(fontFace); //only typeface
someText59.setTypeface(fontFace); //only typeface
someText60.setTypeface(fontFace); //only typeface
someText61.setTypeface(fontFace); //only typeface
someText62.setTypeface(fontFace); //only typeface
someText63.setTypeface(fontFace); //only typeface
someText64.setTypeface(fontFace); //only typeface
someText65.setTypeface(fontFace); //only typeface
someText66.setTypeface(fontFace); //only typeface
someText67.setTypeface(fontFace); //only typeface
someText68.setTypeface(fontFace); //only typeface
someText69.setTypeface(fontFace); //only typeface
someText70.setTypeface(fontFace); //only typeface
een = (CheckBox) findViewById(R.id.checkBox1);
een.setOnClickListener(new OnClickListener(){
public void onClick(View v){
if(((CheckBox) v).isChecked()){
een.setTextColor(R.color.black);
} else {
een.setTextColor(Color.rgb(255,255,255));
}
}
});
v42 = (CheckBox) findViewById(R.id.checkBox52);
v42.setOnClickListener(new OnClickListener(){
public void onClick(View v){
if(((CheckBox) v).isChecked()){
v42.setTextColor(R.color.black);
} else {
v42.setTextColor(Color.rgb(255,255,255));
}
}
});
v43 = (CheckBox) findViewById(R.id.checkBox53);
v43.setOnClickListener(new OnClickListener(){
public void onClick(View v){
if(((CheckBox) v).isChecked()){
v43.setTextColor(R.color.black);
} else {
v43.setTextColor(Color.rgb(255,255,255));
}
}
});
v44 = (CheckBox) findViewById(R.id.checkBox54);
v44.setOnClickListener(new OnClickListener(){
public void onClick(View v){
if(((CheckBox) v).isChecked()){
v44.setTextColor(R.color.black);
} else {
v44.setTextColor(Color.rgb(255,255,255));
}
}
});
v45 = (CheckBox) findViewById(R.id.checkBox55);
v45.setOnClickListener(new OnClickListener(){
public void onClick(View v){
if(((CheckBox) v).isChecked()){
v45.setTextColor(R.color.black);
} else {
v45.setTextColor(Color.rgb(255,255,255));
}
}
});
v46 = (CheckBox) findViewById(R.id.checkBox56);
v46.setOnClickListener(new OnClickListener(){
public void onClick(View v){
if(((CheckBox) v).isChecked()){
v46.setTextColor(R.color.black);
} else {
v46.setTextColor(Color.rgb(255,255,255));
}
}
});
v47 = (CheckBox) findViewById(R.id.checkBox57);
v47.setOnClickListener(new OnClickListener(){
public void onClick(View v){
if(((CheckBox) v).isChecked()){
v47.setTextColor(R.color.black);
} else {
v47.setTextColor(Color.rgb(255,255,255));
}
}
});
v48 = (CheckBox) findViewById(R.id.checkBox58);
v48.setOnClickListener(new OnClickListener(){
public void onClick(View v){
if(((CheckBox) v).isChecked()){
v48.setTextColor(R.color.black);
} else {
v48.setTextColor(Color.rgb(255,255,255));
}
}
});
v49 = (CheckBox) findViewById(R.id.checkBox59);
v49.setOnClickListener(new OnClickListener(){
public void onClick(View v){
if(((CheckBox) v).isChecked()){
v49.setTextColor(R.color.black);
} else {
v49.setTextColor(Color.rgb(255,255,255));
}
}
});
v50 = (CheckBox) findViewById(R.id.checkBox60);
v50.setOnClickListener(new OnClickListener(){
public void onClick(View v){
if(((CheckBox) v).isChecked()){
v50.setTextColor(R.color.black);
} else {
v50.setTextColor(Color.rgb(255,255,255));
}
}
});
v51 = (CheckBox) findViewById(R.id.checkBox61);
v51.setOnClickListener(new OnClickListener(){
public void onClick(View v){
if(((CheckBox) v).isChecked()){
v51.setTextColor(R.color.black);
} else {
v51.setTextColor(Color.rgb(255,255,255));
}
}
});
v52 = (CheckBox) findViewById(R.id.checkBox62);
v52.setOnClickListener(new OnClickListener(){
public void onClick(View v){
if(((CheckBox) v).isChecked()){
v52.setTextColor(R.color.black);
} else {
v52.setTextColor(Color.rgb(255,255,255));
}
}
});
v53 = (CheckBox) findViewById(R.id.checkBox63);
v53.setOnClickListener(new OnClickListener(){
public void onClick(View v){
if(((CheckBox) v).isChecked()){
v53.setTextColor(R.color.black);
} else {
v53.setTextColor(Color.rgb(255,255,255));
}
}
});
v54 = (CheckBox) findViewById(R.id.checkBox64);
v54.setOnClickListener(new OnClickListener(){
public void onClick(View v){
if(((CheckBox) v).isChecked()){
v54.setTextColor(R.color.black);
} else {
v54.setTextColor(Color.rgb(255,255,255));
}
}
});
v55 = (CheckBox) findViewById(R.id.checkBox65);
v55.setOnClickListener(new OnClickListener(){
public void onClick(View v){
if(((CheckBox) v).isChecked()){
v55.setTextColor(R.color.black);
} else {
v55.setTextColor(Color.rgb(255,255,255));
}
}
});
v56 = (CheckBox) findViewById(R.id.checkBox66);
v56.setOnClickListener(new OnClickListener(){
public void onClick(View v){
if(((CheckBox) v).isChecked()){
v56.setTextColor(R.color.black);
} else {
v56.setTextColor(Color.rgb(255,255,255));
}
}
});
v57 = (CheckBox) findViewById(R.id.checkBox67);
v57.setOnClickListener(new OnClickListener(){
public void onClick(View v){
if(((CheckBox) v).isChecked()){
v57.setTextColor(R.color.black);
} else {
v57.setTextColor(Color.rgb(255,255,255));
}
}
});
v58 = (CheckBox) findViewById(R.id.checkBox68);
v58.setOnClickListener(new OnClickListener(){
public void onClick(View v){
if(((CheckBox) v).isChecked()){
v58.setTextColor(R.color.black);
} else {
v58.setTextColor(Color.rgb(255,255,255));
}
}
});
v59 = (CheckBox) findViewById(R.id.checkBox69);
v59.setOnClickListener(new OnClickListener(){
public void onClick(View v){
if(((CheckBox) v).isChecked()){
v59.setTextColor(R.color.black);
} else {
v59.setTextColor(Color.rgb(255,255,255));
}
}
});
z60 = (CheckBox) findViewById(R.id.checkBox70);
z60.setOnClickListener(new OnClickListener(){
public void onClick(View v){
if(((CheckBox) v).isChecked()){
z60.setTextColor(R.color.black);
} else {
z60.setTextColor(Color.rgb(255,255,255));
}
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, MENU_SAVE, 0, "Opslaan");
menu.add(1,MENU_LOAD, 1, "Laden");
menu.add(2, MENU_DIALOG, 2, "About");
menu.add(3, MENU_EXIT, 3, "Exit");
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case MENU_SAVE:
Here i want to Save the Checkboxes
return true;
case MENU_LOAD:
Here i want to Load the Checkboxes
return true;
case MENU_DIALOG:
Dialog dialog = new Dialog(lidl.this);
dialog.setContentView(R.layout.custom_dialog);
dialog.setTitle("About");
dialog.setCancelable(true);
//there are a lot of settings, for dialog, check them all out!
//set up text
TextView text = (TextView) dialog.findViewById(R.id.text);
text.setText("Hallo, deze applicatie is een variant op Appie©. Deze applicatie is op volgorde van de winkel waar wij meestal onze boodschappen doen. Wilt u ook zo'n applicatie, ga dan naar het tabje Mail. Zet daarin welke winkel(s) het zijn, en wat u daar altijd koopt.");
dialog.show();
return true;
case MENU_EXIT:
AlertDialog.Builder alt_bld = new AlertDialog.Builder(this);
alt_bld.setMessage("Weet je zeker dat je wilt afsluiten?")
.setCancelable(false)
.setPositiveButton("Ja", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
System.exit(0);
}
})
.setNegativeButton("Nee", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// Action for 'NO' Button
dialog.cancel();
}
});
AlertDialog alert = alt_bld.create();
//Title for AlertDialog
alert.setTitle("Exit");
alert.show();
return true;
}
return false;
}
}
Tun Sie nun, wie dies zu tun?
Ich hoffe, Sie verstehen mich, und ich hoffe Ihr könnte mir helfen.
Gaauwe
EDIT:
Hier ist der code, den ich will, zu retten Dinge, und Last Dinge:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(2, MENU_SAVE, 2, "Save");
menu.add(3, MENU_LOAD, 3, "Load");
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case MENU_SAVE:
Here save the checkboxes
return true;
case MENU_LOAD:
Here load the checkboxes
return true;
InformationsquelleAutor Gaauwe | 2011-07-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie etwa SharedPreferences? Sie können speichern und laden des Status und der name der checkbox in eine Schlüssel /Wert-format. Wie zu verwenden.
E. g. so etwas wie dieses:
Allerdings sollten Sie implementieren effizienter Weg, wahrscheinlich eine Schleife über alle Checkboxen zu Lesen, den Namen oder die id, die Sie anrufen können, vor dem verlassen der Aktivität.
Könnten Sie mir bitte helfen?
So habe ich eine option mit:Fall MENU_WEEK: SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); SharedPreferences.Editor Editor = Einstellungen.edit(); boolean checkBoxValue = v42.isChecked(); editor.putBoolean("v42", checkBoxValue); editor.commit();; return true; case MENU_LOAD: v42.setChecked() = settings.getBoolean("v42", false); return true; Aber dann sagt er: auf Der linken Seite einer Zuweisung muss eine variable sein
Mein bad,
setChecked()
muss einen booleschen Wert als parameter. Habe ich korrigiert, die Quelle oben. P. S. können Sie die Einstellungen initialisieren und editor-Objekte einmal und verwenden Sie für jeden Anlass, habe ich noch empfehlen Ihnen, Lesen Sie die offizielle Referenz.ich bin neu in android, also vielleicht würden Sie mir sagen, wie ich einstellen kann das eine option im Menü die save-und load-option im Menü, die ich Schreibe in meiner Beschreibung?
InformationsquelleAutor iDroid
Überschreiben onSaveInstanceState(Bundle outState) und schreiben, welche überprüft, in outState. Dann können Sie sehen, welche aktiviert sind, wenn Sie die Aktivität erzeugen, ist durch die Extraktion der Informationen aus dem savedInstanceState übergeben onCreate(Bundle savedInstanceState)
Beispielsweise
WICHTIG: Es gibt keine Garantie, dass "onSaveInstanceState' aufgerufen wird. Also nur verwenden, wenn das speichern der ui-state ist für die Bequemlichkeit für den Benutzer und nicht entscheidend für die Funktionalität. Benutzer werden glücklicher sein, wenn Sie nicht speichern Sie die Daten auf Ihrem Gerät, dh durch die Verwendung SharedPreference.
ich bin neu in android, also vielleicht würden Sie mir sagen, wie ich einstellen kann das eine option im Menü die save-und load-option im Menü, die ich Schreibe in meiner Beschreibung?
sind Sie aufgehört mit mir zu helfen? :'(
Ich bearbeitet meine Antwort zu zeigen, wie Sie es tun!
Können Sie nehmen einen Blick auf meinen edit
InformationsquelleAutor Gallal
Wenn Sie möchten, speichern Sie einfach Daten über Sitzungen werfen Sie einen Blick auf die Dokumentation hier: http://developer.android.com/guide/topics/data/data-storage.html insbesondere die gemeinsamen Vorlieben boolean Speicher würde den trick tun.
Auf dem Lebenslauf solltest du die Werte aus dem shared prefs und markieren Sie die Ankreuzfelder, die Sie verwenden. Bei einer pause sollten Sie die Werte der Kontrollkästchen und legen Sie Sie in den freigegebenen Einstellungen.
Ich lief auch in diesem http://developer.android.com/reference/android/preference/CheckBoxPreference.html, wenn man die HeloViews tutorial.
Nur einige Lesen um, vielleicht kommt geben Sie einige code-Beispiele, wenn ich Zeit habe später.
Hoffe, das hilft.
Ich jetzt, aber ich habe versucht, so viele Dinge getan, aber ich weiß nicht jetzt, wie man eine sharedpreference für eine checkbox, und wenn ich das habe, ich jetzt nicht, wie man es in den code von meinem edit. Also meine Frage ist, könnten Sie schreiben Sie einen einfachen code für mich?
Ich schrieb einen Schnipsel von code für Sie, genau das zu tun, aber ich habe immer Fehler bei der Verwendung einer checkbox die Methode setChecked, so bin ich ein wenig ratlos auch. Wird immer wieder versuchen in meiner Freizeit wenn.
Oké, das ist, was im auch haben, vielleicht könnten Sie diese Frage auch, dass mehr Menschen sehen diese Frage? Ich hoffe jemand könnte mir helfen :'(
InformationsquelleAutor Cooltrooper
Schauen Sie sich diesen link
http://examples.javacodegeeks.com/android/core/content/android-sharedpreferences-example/
Sind Sie gehen zu müssen zu spielen, um mit es sich ein wenig, nur so wirst du es lernen.
Dies hat mir geholfen,
InformationsquelleAutor Aaron