如何保存复选框的状态? if是启用还是禁用

时间:2015-03-20 23:52:28

标签: android checkbox sharedpreferences state

我正在制作一个有很多复选框的应用。我想保存这些状态,但只有在检查这些状态时才能保存,但现在我想要保存,如果启用或禁用,因为一些复选框激活状态到其他复选框。我怎么能这样做?

...

if (view.equals(contador11)){
                if(contador11.isChecked()){
                    contador14.setEnabled(true);                
                }else{
                    contador14.setEnabled(false);               
                }
            }


        if (view.equals(contador12)){
            if(contador12.isChecked()){
                contador13.setEnabled(true);
                contador26.setEnabled(true);
            }else{
                contador13.setEnabled(false);
                contador26.setEnabled(false);
                 }
        }


        if (view.equals(contador7)){
            if(contador7.isChecked()){
                contador15.setEnabled(true);                
            }else{
                contador15.setEnabled(false);               
            }
        }

...

2 个答案:

答案 0 :(得分:0)

我没有完全遵循您的代码,但假设您想要同时保存所有代码,您可以通过将代码放入列表或其他内容来保存代码。这是一个例子。


private SharedPreferences prefs;
private CheckBox[] contadors;
private CheckBox contador1, contador2, contador3, contador4, contador5, contador6;

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

    prefs = getSharedPreferences("MyPrefs", MODE_PRIVATE);

    contador1 = (CheckBox) findViewById(R.id.contador1);
    contador2 = (CheckBox) findViewById(R.id.contador2);
    contador3 = (CheckBox) findViewById(R.id.contador3);
    contador4 = (CheckBox) findViewById(R.id.contador4);
    contador5 = (CheckBox) findViewById(R.id.contador5);
    contador6 = (CheckBox) findViewById(R.id.contador6);
}

public void clickContador(View view) { // Just for testing
    CheckBox contador = (CheckBox) view;
    view.setEnabled(false);
}

@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    saveContadors();
}

@Override
protected void onResume() {
    super.onPostResume();
    contadors = new CheckBox[]{contador1, contador2, contador3, contador4, contador5, contador6};
    loadContadors();
}

private void saveContadors() {
    SharedPreferences.Editor editor = prefs.edit();
    for (int i = 0; i < contadors.length; i++)
        editor.putBoolean("contador" + i, contadors[i].isEnabled());
    editor.apply();
}

private void loadContadors() {
    for (int i = 0; i < contadors.length; i++)
        contadors[i].setEnabled(prefs.getBoolean("contador" + i, true));
}

<CheckBox
    android:id="@+id/contador1"
    android:onClick="clickContador"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

答案 1 :(得分:0)

要设置CheckBox的状态,我们可以使用SharedPreferences

CheckBox contador = (CheckBox) findViewById(R.id.contador1);
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences();

if (contador.isChecked()) {
    prefs.edit().putBoolean("key", true).commit(); // put true value
}else{
    prefs.edit().putBoolean("key", false).commit(); // put false value
}

获取您保存的值:

boolean myContador = prefs.getBoolean("key", false);
if (myContador == true) {
    // do your thing
}else{
    // the value is false, do something
}