我的应用程序中有一个复选框,我想知道是否有可能让应用程序记住复选框的最后状态我的意思是当选中复选框并且当应用程序再次打开时关闭应用程序仍然检查是否与未选中相同。
这就是我做到的。
我在OnResume上有这段代码
@Override
protected void onResume() {
super.onResume();
if(checkbox.equals(true)){
checkbox.setChecked(true);
}else{
checkbox.setChecked(false);
}
}
这是我的onchecklistener
checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
// TODO Auto-generated method stub
if(checkbox.isChecked()){
checkbox.setChecked(true);
publicvar.displayMessage(Login.this, "check", 0);
}else{
checkbox.setChecked(false);
publicvar.displayMessage(Login.this, "uncheck", 0);
}
}
});
不幸的是它无法正常工作
答案 0 :(得分:3)
我同意Ted Hopp。
试试这个:
public void saveCheckBoxState(boolean isChecked){
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean("key",isChecked);
editor.commit();
}
在saveCheckBoxState(boolean)
onCheckedChanged()
和
public boolean getCheckBoxState(){
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
return prefs.getBoolean("key", false);
}
在您活动的getCheckBoxState()
中致电onResume()
。
答案 1 :(得分:1)
您应该保留复选框状态。例如,您可以使用SharedPreferences。
答案 2 :(得分:1)
您需要将检查状态存储在某种持久存储中。最简单的方法是使用SharedPreferences
。您将值存储在监听器中并在onResume
中读取。
答案 3 :(得分:0)
CheckBox stayInCheckBox = (CheckBox) findViewById(R.id.check_remember);
SharedPreferences sharedpreferences = PreferenceManager .getDefaultSharedPreferences(getApplicationContext());
// put this code in oncreate method
public void stayIn()
{
sharedpreferences = getSharedPreferences("myrem", MODE_PRIVATE);
String s3 = sharedpreferences.getString("check", "false");
String name = sharedpreferences.getString("name", null);
if (s3.equals("true")) {
stayInCheckBox.setChecked(true);
editUser.setText(name);
editPassword.setText(pass);
} else {
stayInCheckBox.setChecked(false);
}
}
// put this code when app is closed
public void setSharedPreference()
{
if (stayInCheckBox.isChecked()) {
String s1 = "true";
sharedpreferences = getSharedPreferences("myrem", MODE_PRIVATE);
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putString("name", editUser.getText().toString());
editor.putString("check", s1);
editor.commit();
} else {
String s2 = "false";
sharedpreferences = getSharedPreferences("myrem", MODE_PRIVATE);
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putString("check", s2);
editor.commit();
}
}
答案 4 :(得分:0)
将“共享的首选项”用于“记住我”功能,如果选中了复选框,则只需将布尔值设置为true即可。
请参阅下面的“共享首选项”链接:-
Get Android shared preferences value in activity/normal class