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

まず、「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 に答える
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 に答える