SharedPreferences не показывает типы или все настройки из XML

Когда я смотрю на карту, возвращаемую из get all, я вижу только значения, которые были установлены ранее, как хэш-карту, и я не могу привести к EditTextPreference.

Похоже, что getAll() получает предпочтительный хеш, но не типы из XML

То, что я пытаюсь сделать, это установить сводку для предпочтения значения.

public static class Prefs1Fragment extends PreferenceFragment {

    SharedPreferences sharedPreferences;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Load the preferences from an XML resource
        addPreferencesFromResource(R.xml.initial_preferences);
    }

    @Override
    public void onResume() {
        super.onResume();
        sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity());

        Map<String, ?> preferencesMap = sharedPreferences.getAll();
        String appId = sharedPreferences.getString(PabuloConstants.InternalAppIdPerfName, "N/A");
        // iterate through the preference entries and update their summary if they are an instance of EditTextPreference
        for (Map.Entry<String, ?> preferenceEntry : preferencesMap.entrySet()) {
            if(preferenceEntry instanceof EditTextPreference){
                Log.d("","found instance");
            }
        }
    }
}

XML:

<PreferenceCategory
    android:title="Category Title">

    <EditTextPreference
        android:key="app_id_preference"
        android:title="some title"
        android:summary="some summary"
        />

    <EditTextPreference
        android:key="app_id_preference2"
        android:title="some title"
        android:summary="some summary"
        />

    <EditTextPreference
        android:key="app_id_preference3"
        android:title="some title"
        android:summary="some summary"
        />

</PreferenceCategory>

1 ответ

Хорошо, правильный способ сделать это - вызвать findPreference с ключом

Другие вопросы по тегам