我目前正在安装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
也不会被解开。知道可能是什么问题吗?
答案 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()
调用