2

多分質問は非常に些細なことで、私のグーグルスキルは十分ではありませんが、次の問題の解決策を見つけることができませんでした.

この回避策を使用して、android-support-library と互換性のある PreferenceFragment を構築しました。それはうまく機能し、実装は非常に簡単でした。

この Fragment を開くと ( でonCreate())、各設定の現在の値は、次を使用して設定オブジェクトの概要に表示されます。

preference.setSummary(stringValue);

それはすべての に対してうまく機能しEditTextPreferenceListPreference- 簡単な追加で - に対しても機能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 つのリンクは私の研究をまとめたものですが、私の問題に対する解決策はありませんでした (または、私が盲目すぎて見ることができません)。

4

0 に答える 0