我目前正在做一个Android安全应用程序,并且我试图在某些条件完成后取消选中CheckboxPreferences,所以我试图通过执行此操作取消选中该复选框
的活动:
SharedPreferences sp = getSharedPreferences("isPhysicalTheftEnabled", MODE_WORLD_READABLE);
SharedPreferences.Editor ed = sp.edit();
ed.putBoolean("isPhysicalTheftEnabled", false);
ed.commit();
的preferences.xml
<CheckBoxPreference
android:id="@+id/isPhysicalTheftEnabled"
android:key="isPhysicalTheftEnabled"
android:title="Enable Physical Theft Protection"
android:summary="Select to enable the Physical Theft Protection"
android:defaultValue="false"/>
<Preference android:key="physicaltheft" android:title="Set Physical Theft Protection Password" android:dependency="isPhysicalTheftEnabled"></Preference>
但即使我执行ed.commit()之后,CheckBoxPreference仍未取消选中;知道为什么会这样吗?
答案 0 :(得分:0)
首先,打开名为“isPhysicalTheftEnabled”的首选项文件,然后将false写入此文件。您不更新用户可见的设置,只将名为'isPhysicalTheftEnabled'的值保存到具有相同名称的文件。要更新您的布局,您需要在PreferenceActivity或Fragment中实现onPreferenceChange,例如
public boolean onPreferenceChange(Preference preference, Object newValue) {
Toast.makeText( getApplicationContext(), "NewValue: " + newValue.toString(), Toast.LENGTH_SHORT).show();
return true;
}
答案 1 :(得分:0)
你应该使用
SharedPreferences sp = getDefaultSharedPreferences(this);
或
SharedPreferences sp = getDefaultSharedPreferences(getActivity());
答案 2 :(得分:0)
您可以执行以下操作:
cbxxx.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
Editor edit = PreferenceManager.getDefaultSharedPreferences(
youractivity.this).edit();
if (isChecked) {
edit.putBoolean("isPhysicalTheftEnabled", true);
} else {
edit.putBoolean("isPhysicalTheftEnabled", false);
}
edit.commit();
}
});
如果你想获得上述价值:
SharedPreferences prefs = preferenceManager.getDefaultSharedPreferences(getApplicationContext());
if(prefs.getBoolean("isPhysicalTheftEnabled", false)){
}