Skip to content
Advertisement

How do I save the state of CheckedTextView checkbox so it stays checked after exiting?

So I kinda screwed up while making the checkedtextviews, didn’t realise i needed to save the state, I don’t know how exactly to do it. Any advice would be greatly appreciated.

CheckedTextView C1,C2;

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


    C1 = findViewById(R.id.C1);
    C2 = findViewById(R.id.C2);

    C1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View V) {
            C1.toggle();
            if(C1.isChecked() == true)
            {
                C1.setBackgroundResource(R.drawable.cb_background);
            }
            else
            {
                C1.setBackgroundResource(R.drawable.cb_background_default);
            }
        }
    });
    C2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            C2.toggle();
            if(C2.isChecked() == true)
            {
                C2.setBackgroundResource(R.drawable.cb_background);
            }
            else
            {
                C2.setBackgroundResource(R.drawable.cb_background_default);
            }
        }
    });

Advertisement

Answer

I’m not familiar saving data yet, I know that there is a lot of ways of doing that so i’ll give one example:

Before that here is a guide like that can help: Save key-value data

Here is a example of what i did.You could put the variable as a global if you need.

CheckedTextView C1,C2;

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


    C1 = findViewById(R.id.C1);
    C2 = findViewById(R.id.C2);

    C1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View V) {
            C1.toggle();
            if(C1.isChecked() == true)
            {
                C1.setBackgroundResource(R.drawable.cb_background);
            }
            else
            {
                C1.setBackgroundResource(R.drawable.cb_background_default);
            }
            savePreferences();
        }
    });
    C2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            C2.toggle();
            if(C2.isChecked() == true)
            {
                C2.setBackgroundResource(R.drawable.cb_background);
            }
            else
            {
                C2.setBackgroundResource(R.drawable.cb_background_default);
            }
            savePreferences();
        }
    });
}
//To save the status of each textCheck
public void savePreferences(){
    SharedPreferences preferences = getPreferences(MODE_PRIVATE);
    SharedPreferences.Editor editor = preferences.edit();
    editor.putBoolean("c1",C1.isChecked);
    editor.putBoolean("c2",C2.isChecked);
    editor.apply();
}
//to get each textCheckSaved
public void getSavedPreferences(){
    SharedPreferences preferences = getPreferences(MODE_PRIVATE);
    C1.setChecked(preferences.getBoolean("c1",C1.isChecked))
    C2.setChecked(preferences.getBoolean("c2",C2.isChecked))
}
//to clean the data that you save
public void cleanSavedPreferences(){
    sharedPreferences = getPreferences(MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.remove("c1").remove("c2");
    editor.apply();
}
Advertisement