将CheckBoxPreference值更改为false

时间:2012-07-30 20:43:44

标签: android checkbox sharedpreferences preference

我目前正在安装Android安全应用程序,并且在尝试取消某些条件后CheckboxPreference取消选中。所以我试图通过执行此操作取消选中该复选框,默认情况下CheckBoxPreference实际上是false,因此未经检查。

设定:

<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>
SharedPreferences内的

Activity

    SharedPreferences sp = getSharedPreferences("isPhysicalTheftEnabled", MODE_WORLD_READABLE);
    SharedPreferences.Editor ed = sp.edit();
    ed.putBoolean("isPhysicalTheftEnabled", false);
    ed.commit();

即使我已经这样做,CheckBoxPreference也不会被解开。知道可能是什么问题吗?

2 个答案:

答案 0 :(得分:1)

我真的不明白你想要完成什么,但我猜你得错了SharedPrefence文件。

尝试拨打

SharedPreferences myPrefs = PreferenceManager.getDefaultSharedPreferences(myContext);

或者检查文件名是什么,查看data / data / yourpackage / shared_prefs

你写了一个名为“isPhysicalTheftEnabled”的偏好文件,我猜这是不一样的。

答案 1 :(得分:0)

呃,你在共享的偏好设置中加了一个“假”而没有触及checkboxpreference视图......如果你在某个地方存储了一个引用,那就好了

  CheckBoxPreference cbp = (CheckBoxPreference) findViewById(R.id.isPhysicalTheftEnabled);
  SharedPreferences sp = getSharedPreferences("isPhysicalTheftEnabled", MODE_WORLD_READABLE);
  SharedPreferences.Editor ed = sp.edit();
  ed.putBoolean("isPhysicalTheftEnabled", cbp.getChecked());  //puts the real value in here
  ed.commit();
  cbp.setChecked(false);    //turn it off as you intended
  cbp.postInvalidate();    //refresh the view

setChecked()可能必须从Handler调用,或者通过runOnUIThread()

调用