У меня есть это:
<android.support.v7.preference.EditTextPreference
android:key="pref_somestring"
android:title="@string/setting_somestring"/>
накачано в PreferenceFragmentCompat:
@Override
public void onCreatePreferences(Bundle bundle, String s) {
// Load the Preferences from the XML file
addPreferencesFromResource(R.xml.settings);
}
Я хочу иметь возможность обновлять значение в видимом фрагменте из асинхронного события.
До сих пор я пробовал следующее:
Preference pref = findPreference("pref_somestring");
pref.setSummary(newValue); // works on pref summary only
pref.setDefaultValue(newValue); // doesn't help
pref.callChangeListener(newValue); //doesn't help either
SharedPreferences.Editor editor =
PreferenceManager.getDefaultSharedPreferences(
getContext().getApplicationContext()).edit();
editor.putString("pref_somestring", newValue);
editor.commit();
Изменение SharedPreference - единственный способ, который я обнаружил, влияющий на диалог вообще ... но он работает только ПОСЛЕ того, как я снова открываюфрагмент!
Я вообще не хочу связываться с SharedPrefs, если это возможно.