2011-12-30 5 views
0

Я хочу получить «записи», а не «entryValue» из общего предпочтения. Я использую это и он получает entryValue:Как получить значение общих предпочтений

String notifyInterval = PreferenceManager.getDefaultSharedPreferences(mActivity).getString(ACCUWX.Preferences.PREF_NOTIFY_INTERVAL, null); 

Вот это XML и массив файлов:

<ListPreference 
android:key="pref_temp_notifications" 
android:title="@string/notifications" 
android:entries="@array/pref_temp_notifications" 
android:entryValues="@array/pref_temp_notifications_values" 
android:dialogTitle="@string/notifications" 
android:defaultValue="2"/> 

<string-array name="pref_temp_notifications"> 
    <item>@string/my_current_location</item> 
    <item>@string/home_location</item> 
    <item>@string/off</item> 
</string-array> 
<string-array name="pref_temp_notifications_values"> 
    <item>0</item> 
    <item>1</item> 
    <item>2</item> 
</string-array> 

Так что я хотел бы получить строковое значение, а не числовое. Числовое значение - это то, что я получил и назначил моей переменной notifyInterval. Как захватить текст?

+0

Почему бы не просто заменить '0,1,2' строки значения – Wozza

+0

я не делаю этого, потому что есть другие предпочтения, что мне нужно как строковое значение и целое значение для вычислений в коде. – taraloca

+0

Метод getAll() SharedPreferences вернет вам все пары ключ-значение. На этой карте вы можете получить все ключевые значения. – Yury

ответ

0

Вам нужно использовать метод getAll(), который возвращает Map, с этой карты, получить KeySet, который возвращает записи общих предпочтений.

Map<String, ?> test = getAll(); 
Set keySet = test.keySet(); 

Iterator<String> keySetIter = keySet .iterator(); 
    while (keySetIter.hasNext()) { 
    String keyEntry= keySetIter.next(); 
} 
+0

Я пробовал это, и он возвращает ключ, а не сохраненное значение. – taraloca

+0

Я думаю, что это то, что вы ищете? Знаете ли вы ключ для получения sharedpreferences? Если это так, вы можете использовать что-то вроде этого. Если ваше значение Integer, вам нужно использовать getInt() вместо getBoolean (....) Параметры SharedPreferences = getSharedPreferences (PREFS_NAME, 0); boolean silent = settings.getBoolean ("silentMode", false); – kosa

+0

Это возвращает entryValue, и мне нужны записи. Я могу сделать это в своей деятельности, которая расширяет PreferenceActivity, как это, где «ключ» является моим предпочтением: Preference pref = findPreference (key); \t \t Строка currentPrefValue = null; \t if (pref instanceof ListPreference) { \t ListPreference listPref = (ListPreference) pref; \t currentPrefValue = (listPref.getEntry()). ToString(); \t Log.i (DEBUG_TAG, "текущее значение pref в onSharedPreferenceChanged является" + currentPrefValue); \t} – taraloca

Смежные вопросы