【发布时间】:2015-09-30 02:40:42
【问题描述】:
我定义了一个复选框,但没有为其赋值。
每次我点击它并打印复选框的值时,它每次都显示true。
我将结果放在 SharedPreferences 中,然后检索它。
为什么总是true?
public class CallAndSms extends Activity{
static SQLiteDatabase myDB= null;
static Context context ;
static ListView lv;
static CallAndSmsAdaptor adapter;
static ArrayList<String> AllData= new ArrayList<String>();
CheckBox save;
static SharedPreferences preferences;
SharedPreferences.Editor editor=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sms_call);
preferences = getSharedPreferences("modes",Context.MODE_PRIVATE);
editor = preferences.edit();
save= (CheckBox) findViewById(R.id.save);
save.setChecked(preferences.getBoolean("save", true));
context=this;
save.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
if ( save.isChecked()){
Log.i("save save", save.isChecked()+"");
editor.putBoolean("save", true);
}
else
{editor.putBoolean("save", false);}
Log.i("pref", preferences.getBoolean("save", true)+"");
}
});
}
}
【问题讨论】:
-
因为您在从共享首选项中获取值时传递了默认值,键为“保存”为真。所以默认情况下你的复选框被选中