2013-09-26 1 views
0

SharedPreference에서 getInt()을 시도 할 때마다 내 응용 프로그램이 다운되지만 언제든지 환경 설정을지도로 반복 할 수 있습니다. 예를 들어, 아래의 별표 라인을 참조하십시오 (이 샘플 및 여러 활동을 통해 작업 환경 설정 화면에 의해 입증) 분명히값이 존재 함에도 불구하고 공유 환경 설정 값을 가져올 수 없습니다.

private void loadPref(){ 
    myPrefs = PreferenceManager.getDefaultSharedPreferences(this); 
    int sf = DEFAULT_VALUE; 

    Map<String,?> keys = myPrefs.getAll(); 
    for(Map.Entry<String,?> entry : keys.entrySet()){ 
     if (entry.getKey().contentEquals("score_format")) 
      // this works:           //***** 
      sf = Integer.parseInt(entry.getValue().toString()); //***** 
    } 

    // but this does not:           //***** 
    // sf = myPrefs.getInt("score_format", DEFAULT_VALUE);   //***** 
    setScoreFormat(sf); 
} 

를 내의 환경 설정이 저장되고있다. getDefaultSharedPreferences에 액세스하기 전에 super.onCreate()를 호출합니다.

이 코드가 작동하지 않는 이유를 이해하려면 어떻게해야합니까? 왜지도가 작동 하나 "getInt"메소드가 아닌가? 키 값을 명시 적으로 캐스팅하려고 시도하면 앱이 중단된다는 것을 알았습니다 ... 먼저 toString을 캐스팅해야했습니다.

무엇이 누락 되었습니까?

+0

예외 logcat을 게시 할 수 있습니까? 'DEFAULT_VALUE'의 정의는 무엇입니까? – Szymon

답변

0

구문 분석하지 않으려면 putExtra으로 의도에 넣는 점수가 int 유형이 아니고 문자열인지 확인하십시오.

+0

고맙습니다. 물론. – TonyMLake

0

score_format 키로 지정된 객체와 비슷하지만 String이지만 실수로 int으로 표시하려고합니다.

+0

네, 그렇습니다. 내가 그걸 놓쳤다는 것을 믿을 수 없어. Darned 나무는 도처에 존재했다. 그리고 나는 숲을 볼 수 없었다. 감사! – TonyMLake

관련 문제