我设法通过保存按钮保存我的文本值和复选框值。现在我想创建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();
}
}
答案 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);
}
}
});
第二个复选框也是如此。