2016-10-08 2 views
0

이 질문에 이미 많은 답변이 있지만이 문제에 대한 답을 찾지 못했습니다.Committed() 후 SharedPreference가 업데이트되지 않았습니다.

내가 이해 무엇
SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences(Config.SHARED_PREF_NAME, Context.MODE_PRIVATE); 

//Creating editor to store values to shared preferences 
SharedPreferences.Editor editor = sharedPreferences.edit(); 
editor.clear(); 

//Adding values to editor 
editor.putBoolean(Config.LOGGEDIN_SHARED_PREF, true); 
editor.putString(Config.PHONE_SHARED_PREF, phoneNo); 
Log.d("debug", "config "+Config.PHONE_SHARED_PREF); 
Log.d("debug", "config "+phoneNo); 

//Saving values to editor 
editor.apply(); 
editor.commit(); 

, editor.putString(Config.PHONE_SHARED_PREF, phoneNo)PHONE_SHARED_PREFphoneNo의 값을 저장 의미

여기 내 코드입니다. 내가 틀렸다면 나를 바로 잡아주세요.

그러나 로그에서 phoneNo에 할당 된 새 값 대신 Config.PHONE_SHARED_PREF이 기본값을 인쇄했습니다. 즉, phoneNo의 값이 올바르게 저장되지 않았습니까?

누군가 내 코드에 어떤 문제가 있다고 설명 할 수 있습니까? :/

+0

'commit()'과'apply()'는 같고 후자는 부울 값을 반환하지 않습니다. 둘 중 하나를 제거하고 다시 시도하십시오. 당신은'editor.getString (Config.PHONE_SHARED_PREF, "")'를 사용하여 값을 얻을 수있다. 키가 존재하지 않으면 두 번째 매개 변수가 반환됩니다. –

+1

죄송합니다.'sharedPreferences.getString (...)'을 사용해보십시오. –

+0

아무 것도 반환하지 않습니다 (두 번째 매개 변수) – August

답변

2
SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences(Config.SHARED_PREF_NAME, Context.MODE_PRIVATE); 

//Creating editor to store values to shared preferences 
SharedPreferences.Editor editor = sharedPreferences.edit(); 
editor.clear(); 

//Adding values to editor 
editor.putBoolean(Config.LOGGEDIN_SHARED_PREF, true) 
     .putString(Config.PHONE_SHARED_PREF, phoneNo) 
     .commit(); // returns true if successfully saved. 

Log.d("debug", "config " + sharedPreferences.getString(Config.PHONE_SHARED_PREF, ""); 

위를보십시오.

+0

이 하나의 작품! 감사! 약간 설명해 주시겠습니까? 여전히 공유 환경 설정에서 새로운 :) – August

+1

'apply()'및'commit()'을 포함하는 부분을 제외하고 코드에서 수행 한 모든 작업이 정확 해 보입니다. 본질적으로, 둘 중 하나만 사용해야하며 두 가지 모두를 사용해야하는 것은 아닙니다. 두 가지의 차이점을 이해하려면 http://stackoverflow.com/questions/5960678/whats-the-difference-between-commit-and-apply-in-shared-preference를 참조하십시오. –

+0

가능하면 답변을 수락하십시오. 비슷한 도움을 얻으 려한다면 다른 사람들에게 도움이 될 것입니다. :] –

1

시도해보십시오.

SharedPreferences sharedPreferences = getActivity().getSharedPreferences(Config.SHARED_PREF_NAME, Activity.MODE_PRIVATE); 

sharedPreferences.edit().putBoolean(Config.LOGGEDIN_SHARED_PREF, true).commit(); 
sharedPreferences.edit().putString(Config.PHONE_SHARED_PREF, phoneNo).commit(); 
관련 문제