2014-01-12 1 views
3

그래서 내 응용 프로그램에는 StartActivity 및 SettingsActivity라는 두 가지 활동이 있습니다.GetDefaultSharedPreferences 사용 - 활동간에 SharedPref 값이 재설정되었습니다.

StartActivity (시작 활동) - SharedPref에서 레벨 및 사운드 값을 읽었습니다. 값이 설정되어 있지 않으면 기본값으로 설정하고, 그렇지 않으면 발견 된 값을 사용합니다. 다음 코드는 StartActivity의 OnCreate 내부에 있습니다. startActivity를가 시작 - - SettingsActivity에서

SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this); 

String levelValue = sharedPref.getString(getString(R.string.levelpref), null); 
String soundValue = sharedPref.getString(getString(R.string.soundpref), null); 

if(levelValue == null) 
{ 
    String levelDefaultValue = (getResources().getStringArray(R.array.level))[0]; 
    String soundDefaultValue = (getResources().getStringArray(R.array.sound))[0]; 

    SharedPreferences.Editor editor = sharedPref.edit(); 
    editor.putString(getString(R.string.levelpref), levelDefaultValue); 
    editor.putString(getString(R.string.soundpref), soundDefaultValue); 
    editor.apply(); 
} 

, 나는

이제
public void saveSettings(View v) 
{ 
     SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this); 
     SharedPreferences.Editor editor = sharedPref.edit(); 
     editor.putString(getString(R.string.levelpref), level); 
     editor.putString(getString(R.string.soundpref), sound); 
     editor.apply(); 
} 

, 내 응용 프로그램을 실행할 때 소리와 수준에 대해 새롭게 설정 값을 저장 저장 버튼을 가지고보고 그 SharedPref 값에 대한 사운드 및 레벨은 설정되지 않으므로 기본값이 지정됩니다. 다음으로 설정 활동으로 이동하고 사운드 및 레벨에 대한 새 값을 설정하고 저장합니다 (디버거에서 새 값이 설정되었는지 확인할 수 있음).

하지만 StartActivity로 되돌아 왔을 때 SharedPref 값은 어떤 이유로 원래 설정 한 기본값으로 다시 설정됩니다. 그래서 토론을 통해 getDefaultSharedPreferences를 사용하면 액티비티간에 값을 유지해야한다는 것을 알았습니다.

문제점에 대한 아이디어가 있습니까?

최소 SDK 버전 : 11 대상-SDK 버전 : 18

+0

키를 인쇄하십시오. R.string.soundpref 등이 동일합니까? R.android를 가져올 가능성이 있습니까? –

+0

예, 두 위치에서 동일한 키를 참조하고 있습니다. – Hari

+0

코드를 더 게시하십시오. API 수준? 환경 설정에 커밋하고 읽기 전에 디버그 인쇄물을 추가하십시오 - 올바른 순서로되어 있습니까? 프로젝트를 정리하십시오. –

답변

0

난 당신이 컨텍스트와 관련된 사용 컨텍스트이 활동에 대한 서로 다른 또는 당신은 당신의 편집기를 저장 해달라고 방법으로 두 개의 서로 다른 SharedPrefrence 작업을 생각한다 목적. 어쩌면이 코드 도움을 :

SharedPreferences setting = getSharedPreferences("HomeSetting", 0); 
    Editor editor = setting.edit(); 
    editor.putBoolean(SERVICE_ON_VALUE, false); 
    editor.commit(); 

희망 유용합니다 :)

+0

나는 editor.commit()과 editor.apply()를 시도했다. 불행히도 어느 것도 작동하지 않는 것 같습니다. – Hari

+0

이 SharedPrefences를 사용하십시오. 나는 당신의 필요와 비슷한 그것을 사용하고 잘 작동합니다! – FxRi4

+0

아니요 그는 기본 공유 환경 설정을 올바르게 사용하고 있습니다 –

1

은 내가 할 다시 열 PreferenceManager.getDefaultSharedPreferences (이) onResume의 모든 시간을 또는 가능한 changings 후 확인 발견했다.

관련 문제