2011-08-31 3 views
4
ListPreferenceListPreference에서 가져 오는 것은 간단합니다.

ListPreference 선택의 값이 아닌 키 가져 오기 - 가능합니까?

String selected = sharedPrefs.getString(
    getString(R.string.list_preference_array), 
    "default string" 
); 

이제는 현재 선택된 항목의 을 가져와야합니다. 이것이 가능한가?

명확히하기 위해 XML 파일의 일반적인 ListPreference 정의에는 다음과 같은 구성 요소가 있습니다.

<ListPreference 
    android:key="@string/list_preference_array" 
    android:title="Title of ENTIRE list (not seen by user?)" 
    android:summary="this is what the user sees in small fonts" 
    android:defaultValue="just in case" 
    android:entries="@array/user_friendly_labels" 
    android:entryValues="@array/code_meaningful_strings" 
    android:dialogTitle="User Prompt(big font)" 
    android:showDefault="true" 
    android:showSilent="true" 
/> 

sharedPrefs.getString()에서 반환되는 내용은 android : entryValues ​​의 현재 선택 항목입니다. 내가 얻는 것에 관심이있는 것은 android :에서 현재 선택하는 것입니다. 나는 그것을 실수로 "열쇠"라고 불렀지 만 실제로는 실제 레이블과는 다른 내용이어야합니다.

+0

작업 항목을 마지막으로 선택하는 지연 점점? – Erik

+0

@Erik'getString (R.string.select_string)'은 선택이 아닌 전체 ListPreference 배열의 키 ("이름")입니다. – uTubeFan

+0

@uTubeFan, ListPreference를 사용하는 경우 선택한 항목에 대한 키가없고 항목 만 ... –

답변

14

추측의 비트 :

int index = mylistpreference.findIndexOfValue(selected) // <- selected taken from your code above 
String entry = mylistpreference.getEntries()[index]; 
0

기능은 귀하의 예제 코드에서 그래서 defined

SharedPreferences.getString(String key, String defaultValue); 

, getString(R.string.select_string) 키를 반환합니다.

SharedPreference을 추가 할 때 값을 설정하는 데 사용 된 것과 동일한 키가되도록 키를 지정해야합니다.

편집 : 값을 목록에서 선택한 사용자를 반환합니다 키와 ListPreference 키 SharedPreferences.getString()를 사용

. ListPreference 배열의 각 옵션에 대한 키를 만들 필요가 없으며 이러한 키는 자동으로 만들어지지 않습니다. ListPreference의 entryValues과 관련된 case 문 사용

+0

@ Erik 님의 의견에 나의 회신을 올려주세요. – uTubeFan

+0

@uTubeFan, 내 대답을 편집했습니다. –

1

은 사용

mylistpreference.getEntry() 

이 mylistpreference 사용을 얻을 :

mylistpreference= (ListPreference) getPreferenceScreen().findPreference(key); 

키는 안드로이드입니다 : 키는 우선 정의했다. xml inside < ListPreference> 태그. 귀하의 방법 @shai

0

listPreference.getEntry() 

오히려 @Erik의 방법은 (R.string.select_string에게) 당신이 어떤 키를에는 getString되지 좋게

int index = listPreference.findIndexOfValue((String) value) 
String entry = listpreference.getEntries()[index]; 
+0

그것도 좋습니다. 내 시간을 구해줘. 고마워. –