多分質問は非常に些細なことで、私のグーグルスキルは十分ではありませんが、次の問題の解決策を見つけることができませんでした.
この回避策を使用して、android-support-library と互換性のある PreferenceFragment を構築しました。それはうまく機能し、実装は非常に簡単でした。
この Fragment を開くと ( でonCreate()
)、各設定の現在の値は、次を使用して設定オブジェクトの概要に表示されます。
preference.setSummary(stringValue);
それはすべての に対してうまく機能しEditTextPreference
、ListPreference
- 簡単な追加で - に対しても機能CheckboxPreference
します。しかし、私には別の好みがあります:
<Preference
android:key="minInputLength"
android:defaultValue="@integer/numberPickerInputLengthDefaultValue"
android:title="@string/minInputLength"/>
アプリのキャッシュが空でonCreate
メソッドが呼び出されると、このメソッドを呼び出したにもかかわらず、この概要とこの設定のみが空になります。
PreferenceManager.setDefaultValues(this, R.layout.fragment_settings, true);
メインアクティビティで。そうしないと、他のすべての設定の概要も空になります。
上記の設定は、コンテンツ領域に単純な NumberPicker を含むダイアログを開くだけです。NumberPicker 内の値を変更し、ダイアログの PositiveButton を押してダイアログを終了すると、この設定の概要が期待どおりに変更されます。キャッシュをクリアしてフラグメントを再度開くと、サマリーは再び空になります。
そのため、理由を突き止めようとして、LogCat を介してすべての SharedPreferences を表示し、これとこの設定のみが欠落していることを認識しました。これが私が自問する理由です: PreferenceManager は、xml で宣言されている defaultValue を無視し<preference />
ますか?
編集:または、この問題は私が言及した回避策によって引き起こされていますか?
これらの 2 つのリンクは私の研究をまとめたものですが、私の問題に対する解決策はありませんでした (または、私が盲目すぎて見ることができません)。