我是java和android的新手但是尽我所能制作应用程序,基本上我想要一个带有6个文本框的页面,每个允许用户在每个中键入3位唯一值,检查确认框,然后一个按钮保存,然后当用户重新访问应用程序的这一部分数据仍然在那里,我设法让它工作1盒但如果我添加另一个它只是重复框1s值,这里是我的代码为班级
公共类设置扩展Activity实现OnClickListener {
CheckBox cb;
EditText et, et1;
Button b;
String test;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.settings);
cb = (CheckBox) findViewById(R.id.checkBox1);
et = (EditText) findViewById(R.id.editText1);
b = (Button) findViewById(R.id.button1);
b.setOnClickListener(this);
loadPrefs();
cb.setChecked(false);
}
private void loadPrefs() {
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
boolean cbValue = sp.getBoolean("CHECKBOX", false);
String name = sp.getString("NAME", "Kg");
if(cbValue){
cb.setChecked(true);
}else{
cb.setChecked(false);
}
et.setText(name + (" kg"));
}
private void savePrefs(String key, boolean value) {
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
Editor edit = sp.edit();
edit.putBoolean(key, value);
edit.commit();
}
private void savePrefs(String key, String value) {
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
Editor edit = sp.edit();
edit.putString(key, value);
edit.commit();
}
public void onClick(View v) {
// TODO Auto-generated method stub
savePrefs("CHECKBOX", cb.isChecked());
if (cb.isChecked())
savePrefs("NAME", et.getText().toString());
finish();
}
}
随着时间的推移,任何帮助都会受到极大的赞赏:(
答案 0 :(得分:1)
阅读this。
您未编码的是保存数据。
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
boolean cbValue = sp.getBoolean("CHECKBOX", false);
第二行所说的是" CHECKBOX"保存的共享偏好?不,它不是。好吧,让我们获得默认值false。
您需要做的是使用以下方法保存:
SharedPreferences.editor Editor = sp.edit();
Editor.putBoolean("CHECKBOX",true);
Editor.commit();
第一行定义共享首选项编辑器。下一行在CHECKBOX的有效文件名(键)下保存布尔值true,然后提交行说,好了,然后完成它,以便现在每当我调用时:
sp.getBoolean("CHECKBOX",false);
我会成真,因为我不必使用默认值false。
答案 1 :(得分:1)
尽量让你轻松...
首先,在你的proferences xml中,每个文本框和复选框都需要它自己的密钥。
其次,为了便于您阅读/理解,您应为pref保存方法指定一个不同的名称void savePrefs(String key,String value)。
例如String:void savePrefsString(String key,String value)
例如boolean:void savePrefsBoolean(String key,boolean value)
确保每个都被正确调用(savePrefsBoolean用于boolean,savePrefsString用于edittext)。
然后,对于每个编辑文本,您将需要从该edittext的首选项中检索密钥。
示例:
String name1 = sp.getString("NAME1", "Kg");
String name2 = sp.getString("NAME2", "Kg");
String name3 = sp.getString("NAME3", "Kg");
然后:
et1.setText(name1 + (" kg"));
et2.setText(name2 + (" kg"));
et3.setText(name1 + (" kg"));
对你的复选框做同样的事情(它们实际上是真/假布尔)。
示例:
boolean cb1 = sp.getBoolean("CHECKBOX1", false); //false is default value
boolean cb2 = sp.getBoolean("CHECKBOX1", false);
boolean cb3 = sp.getBoolean("CHECKBOX1", false);
然后从prefs:
设置值if(cb1){
cb1.setChecked(true);
}else{
cb1.setChecked(false);
}
并保存用户按下的内容:
savePrefsBoolean("CHECKBOX1", cb1.isChecked()); // get check value of checkbox
savePrefsBoolean("CHECKBOX2", cb2.isChecked());
savePrefsBoolean("CHECKBOX3", cb3.isChecked());