Как программно установить значение в диалоге EditTextPreference? - PullRequest
0 голосов
/ 05 октября 2018

У меня есть это:

<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, если это возможно.

...