1

Android 設定ページを作成し、概要で現在選択されているオプションを表示したいと考えました。

そこで、正しく呼び出される onSharedPreferenceChanged リスナーを実装しました。ただし、画面の変更はなく、古いオプションが表示されます。

public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
    // just update all
    ListPreference lp = (ListPreference) findPreference(PREF_DOWNLOAD_WEB);
    lp.setSummary(getString(R.string.pref_listDownloadWebSummary)  + ": %s");
}

これは既知のバグですか?

4

1 に答える 1

2

別の環境設定の概要を設定すると、更新された概要が表示されることに気付きました。そのため、サマリーを最初に「ダミー」に設定し、次に実際の文字列に設定しました。それも機能します。

public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
    // just update all
    ListPreference lp = (ListPreference) findPreference(PREF_DOWNLOAD_WEB);
    lp.setSummary("dummy"); // required or will not update
    lp.setSummary(getString(R.string.pref_listDownloadWebSummary)  + ": %s");

}
于 2013-05-06T11:13:03.913 に答える