jeudi 10 novembre 2016

Have Multiple Preferences within SharedPreferences for Checkboxes

How can I have a separate preference for each checkbox saving whether it was clicked or not? I have code that works for one and I can repeat it to make it work for each one but I feel I should be able to change it so I don't have so much repeat code.

In onCreate

CheckBox checkbox = (CheckBox) findViewById(R.id.description);
    CheckBox checkbox1 = (CheckBox) findViewById(R.id.description1);

    SharedPreferences sharedPref = getSharedPreferences("mypref", MODE_PRIVATE);
    SharedPreferences sharedPref1 = getSharedPreferences("mypref1", MODE_PRIVATE);
    boolean checked = sharedPref.getBoolean("checked", false);

    boolean checked1 = sharedPref1.getBoolean("checked1", false);

    checkbox.setChecked(checked);
    checkbox1.setChecked(checked1);

My click handler

public void handleCheckBoxClick(View view) {
    CheckBox tmpChkBox = (CheckBox) findViewById(view.getId());
    if(tmpChkBox.isChecked())
    {
        tmpChkBox.setBackgroundColor(Color.BLUE);

        SharedPreferences sharedPref = getSharedPreferences("mypref", MODE_PRIVATE);
        sharedPref.edit().putBoolean("checked", true).commit();

    }
    else
    {
        tmpChkBox.setBackgroundColor(Color.RED);
        SharedPreferences sharedPref = getSharedPreferences("mypref", MODE_PRIVATE);
        sharedPref.edit().putBoolean("checked", false).commit();
    }
}

I got it to work by making another click handler and referring to that which you see in the onCreate where I make a whole separate preference. Is there a way to make one preference that can be used on each check box?

Aucun commentaire:

Enregistrer un commentaire