1

我目前正在做一个 android 安全应用程序,并且在某些条件已经完成后我试图取消选中 CheckboxPreferences 所以我试图通过这样做来取消选中复选框

活动:

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

首选项.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 也不会被取消选中。知道为什么会这样吗?

4

3 回答 3

0

你应该使用

        SharedPreferences sp = getDefaultSharedPreferences(this);

或者

        SharedPreferences sp = getDefaultSharedPreferences(getActivity());
于 2013-02-17T16:33:08.337 回答
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)){
}
于 2014-07-28T12:11:13.860 回答
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;
}
于 2012-07-30T12:02:15.110 回答