多个Checkbox保存Android Eclipse

时间:2013-11-28 11:26:49

标签: android eclipse checkbox

我设法通过保存按钮保存我的文本值和复选框值。现在我想创建2个(或更多)复选框,但是使用当前代码,它只保存一个,而不是其余...它必须是一个小的改变我必须做,但我似乎无法找到它..

import android.app.Activity;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;

public class MainCamperTime extends Activity implements OnClickListener {

CheckBox checkBox;
EditText editText;
Button button;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main_camper_time);

    checkBox = (CheckBox) findViewById(R.id.checkBox1);
    editText = (EditText) findViewById(R.id.editText1);
    button = (Button) findViewById(R.id.button1);
    button.setOnClickListener(this);
    loadSavedPreferences();
}

private void loadSavedPreferences() {
    SharedPreferences sharedPreferences = PreferenceManager
            .getDefaultSharedPreferences(this);
    boolean checkBoxValue = sharedPreferences.getBoolean("CheckBox_Value", false);
    String name = sharedPreferences.getString("storedName", "Wanneer vertrekken?");
    if (checkBoxValue) {
        checkBox.setChecked(true);
    } else {
        checkBox.setChecked(false);
    }

    editText.setText(name);
}

private void savePreferences(String key, boolean value) {
    SharedPreferences sharedPreferences = PreferenceManager
            .getDefaultSharedPreferences(this);
    Editor editor = sharedPreferences.edit();
    editor.putBoolean(key, value);
    editor.commit();
}

private void savePreferences(String key, String value) {
    SharedPreferences sharedPreferences = PreferenceManager
            .getDefaultSharedPreferences(this);
    Editor editor = sharedPreferences.edit();
    editor.putString(key, value);
    editor.commit();
}

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    savePreferences("CheckBox_Value", checkBox.isChecked());
    if (checkBox.isChecked())
        savePreferences("storedName", editText.getText().toString());

    finish();
}

}

2 个答案:

答案 0 :(得分:0)

您对不同的复选框使用相同的密钥。

替换下面的onClick()方法:

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    savePreferences(((CheckBox)findViewById(v.getId())).getText(), checkBox.isChecked());
    if (checkBox.isChecked())
        savePreferences("storedName", editText.getText().toString());

    finish();
}

当您从sharePreference中检索复选框值时,您需要将复选框的文本作为sharePreference中的键传递,如下所示:

boolean checkBoxValue = sharedPreferences.getBoolean(checkBox.getText(), false); 

答案 1 :(得分:0)

您应该尝试使用CheckChangedListner复选框,如下所示:

checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton buttonView,
                boolean isChecked) {
            if (isChecked) {
            savePreferences("CheckBox_Value", true);
                          savePreferences("storedName", editText.getText().toString());
            } else {
            savePreferences("CheckBox_Value", true);
            }
        }
    });

第二个复选框也是如此。