2014-06-22 2 views
8

getFloat() 메소드는 부동 소수점 값을 android의 SharedPreferences API에서 가져 오는 것입니다. 그러나, XML에서, EditTextPreference는 항상 숫자가 정의 된 경우에도, 문자열 값을 저장합니다.SharedPreferences.getFloat()의 요점은 무엇입니까

getFloat()은 자동으로이 값을 반환하지만 ClassCastException을 던집니다.이 값을 얻으려면 Float.parseFloat(SharedPreferences.getString())을 사용해야합니다.

문자 그대로 getFloat()에 대한 용도가 없나요? 아니면 여기에 뭔가 빠졌습니까?

+1

텍스트 입력란 편집에 대한 올바른 이해가 있다면 예를 들어 문자열로 저장하고 getFloat()를 사용하지 마십시오. 내 지식에서 getFloat()는 수학 변수 또는 심지어 GPS 좌표를 저장하는 데 더 많이 사용됩니다. – zgc7009

답변

5

getFloat() 메소드는 안드로이드의 SharedPreferences API에서 float 값을 가져 오기 위해 존재합니다.

예.

그러나 xml에서 EditTextPreference는 숫자가 정의되어 있어도 항상 문자열 값을 저장합니다.

나는 당신이 여기 물건을 혼합 생각합니다. 당신은 PreferenceScreen의 요소에 SharedPreferences 동일 설정된다.

당신의 SharedPreferences에 모든 값을 저장 PreferenceScreen's 그것은 EditTextPreferences가 float를 저장할 수 없습니다 사실,하지만 당신은 그러나 당신의 SharedPreferences 자신에 float를 저장할 수 있습니다

SharedPreferences prefs = getSharedPreferences(PREFS_NAME, 0); 
SharedPreferences.Editor editor = prefs.edit(); 
editor.putFloat("aFloat", 1.2f); 
editor.commit(); 

다음과 같이 플로트를 검색 :

+2

아하! 그래서 그것을 사용할 수 있습니다! getFloat()가 불평하기 전에 문자열을 먼저 캐스팅하려고했었다. –

+0

지금 당장 자신을 테스트 할 필요없이 관심있는 질문으로 1.2를 float로 저장하도록하거나 1.2f – zgc7009

+0

@ zgc7009로 float로 명시 적으로 선언해야합니다. 물론 그렇습니다. 1.2f. 고마워, 나는 그것을 고쳤다. – Ahmad