私は Android アプリに PreferenceActivty を持っています。これは互換性の理由から、getPreferenceScreen() メソッドとコードで作成するいくつかの Preference オブジェクト (主に CheckBoxPreference と SwitchPreference) を介して使用します。
私のアプリの以前のバージョンまでは、合計で 8 つの設定があり、すべて正常に機能していましたが、今ではさらに 2 つの設定を追加したところ、非常に奇妙な問題が発生しています。
画面の 2 番目の設定は、SwitchPreference です。アクティビティを開くと、チェックされています。実際に何も変更せずに画面を下にスクロールすると、突然その値が自動的にオフに設定されます。OnChangeListener を Preference に追加して OnSharedPreferenceChangeListener を実装しようとしましたが、結果は同じです。特定の Preference が画面から消えると、オフになります。OFF に設定すると、その値が保持され、変更リスナーは呼び出されません。
なぜこれが起こっているのか、誰にも分かりますか?私は完全に迷っています...
前もって感謝します!
私の好みのコードは基本的にこれで、onCreate メソッドで 5 つの異なる設定に対して 5 回繰り返されます。
controlWifiPreference = new CheckBoxPreference(this);
controlWifiPreference.setKey(Constants.PREF_1_KEY);
getPreferenceScreen().addPreference(controlWifiPreference);
wifiPreference = new SwitchPreference(this);
wifiPreference.setKey(Constants.PREF_2_KEY);
getPreferenceScreen().addPreference(wifiPreference);
設定は TabActivity 内にあるため、onResume メソッドですべての設定に対して setChecked() を呼び出して値を再度設定しますが、それが完全に必要かどうかはわかりません。
最後に、 setDependency メソッドを機能させることができなかったため、他の人がクリックされたときに設定をアクティブ化/非アクティブ化する onSharedPreferenceChanged メソッドがあります。これは次のようなものです (繰り返しますが、5 回繰り返します)。
if (key.equals(controlWifiPreference.getKey())) {
wifiPreference.setEnabled(controlWifiPreference.isChecked());
}