0

私は現在 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私がそうしたとしても、チェックを外すことはありません。何が問題なのですか?

4

2 に答える 2

1

私はあなたが何を達成しようとしているのか本当に理解していませんが、私の推測では、間違ったSharedPrefenceファイルを取得していると思います。

電話してみてください

SharedPreferences myPrefs = PreferenceManager.getDefaultSharedPreferences(myContext);

または、ファイル名の名前を確認し、data / data / yourpackage/shared_prefsの下を確認します

「isPhysicalTheftEnabled」という設定ファイルに書き込みますが、これは同じではないと思います。

于 2012-07-30T21:02:34.493 に答える
0

ええと、チェックボックス設定ビューに触れずに共有設定に「false」を入れています...どこかに参照を保存した場合、それは素晴らしいことではありません

  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() は、ハンドラーから、または runOnUIThread() 経由で呼び出す必要がある場合があります

于 2012-07-30T20:48:42.723 に答える