그래서 내 응용 프로그램에는 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
키를 인쇄하십시오. R.string.soundpref 등이 동일합니까? R.android를 가져올 가능성이 있습니까? –
예, 두 위치에서 동일한 키를 참조하고 있습니다. – Hari
코드를 더 게시하십시오. API 수준? 환경 설정에 커밋하고 읽기 전에 디버그 인쇄물을 추가하십시오 - 올바른 순서로되어 있습니까? 프로젝트를 정리하십시오. –