2017-11-24 2 views
-6

Ich bin ein Java-Anfänger und habe Probleme beim Speichern der Checkbox-Status, ich muss eine Liste erstellen, und diese Optionen würden lokal in der App selbst gespeichert werden.CheckBox in Android Studio speichern

Der Code funktioniert nur für 1 Kontrollkästchen, wenn ich versuche, ein anderes hinzuzufügen, das zweite funktioniert nicht, es speichert die gleichen Daten wie das erste.

public class MainActivity extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    final CheckBox checkBox = (CheckBox) findViewById(R.id.checkBox); 
    final CheckBox checkBox2 = (CheckBox) findViewById(R.id.checkBox2); 

    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); 
    final SharedPreferences.Editor editor = preferences.edit(); 
    if (preferences.contains("checked") && preferences.getBoolean("checked", false) == true) { 
     checkBox.setChecked(true); 
    } else { 
     checkBox.setChecked(false); 

    } 
    checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton compoundButton, boolean b) { 
      if (checkBox.isChecked()) { 
       editor.putBoolean("checked", true); 
       editor.apply(); 
      } else { 
       editor.putBoolean("checked", false); 
       editor.apply(); 
      } 
     } 
    }); 

    SharedPreferences preferences2 = PreferenceManager.getDefaultSharedPreferences(this); 
    final SharedPreferences.Editor editor2 = preferences2.edit(); 
    if (preferences2.contains("checked") && preferences2.getBoolean("checked", false) == true) { 
     checkBox2.setChecked(true); 
    } else { 
     checkBox2.setChecked(false); 

    } 
    checkBox2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton compoundButton, boolean b) { 
      if (checkBox2.isChecked()) { 
       editor2.putBoolean("checked", true); 
       editor2.apply(); 
      } else { 
       editor2.putBoolean("checked", false); 
       editor2.apply(); 
      } 
     } 
    }); 
} 
+0

Bitte posten Sie Ihre Frage auf Englisch hier verwenden. Wenn es spanisch ist [Dies] (https://es.stackoverflow.com/) – ADM

+0

Okay, nur einen Moment. –

+0

Dies ist nur Englisch Website. – Redman

Antwort

0

Es behält den gleichen Status, da Sie die gleiche gemeinsame Präferenz für beide Kontrollkästchen verwenden. Sie können auch nur einen Editor

public class MainActivity extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 

final CheckBox checkBox = (CheckBox) findViewById(R.id.checkBox); 
final CheckBox checkBox2 = (CheckBox) findViewById(R.id.checkBox2); 

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); 
final SharedPreferences.Editor editor = preferences.edit(); 
if (preferences.getBoolean("checkbox1", false) == true) { 
    checkBox.setChecked(true); 
} else { 
    checkBox.setChecked(false); 

} 
checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
    @Override 
    public void onCheckedChanged(CompoundButton compoundButton, boolean b) { 
     if (checkBox.isChecked()) { 
      editor.putBoolean("checkbox1", true); 
      editor.apply(); 
     } else { 
      editor.putBoolean("checkbox1", false); 
      editor.apply(); 
     } 
    } 
}); 


if (preferences.getBoolean("checkbox2", false) == true) { 
    checkBox2.setChecked(true); 
} else { 
    checkBox2.setChecked(false); 

} 
checkBox2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
    @Override 
    public void onCheckedChanged(CompoundButton compoundButton, boolean b) { 
     if (checkBox2.isChecked()) { 
      editor.putBoolean("checkbox2", true); 
      editor.apply(); 
     } else { 
      editor.putBoolean("checkbox2", false); 
      editor.apply(); 
     } 
    } 
}); 

}

+0

Arbeitete, danke: D –

+0

Cool @CleideSilva;) – joao86

Verwandte Themen